<?xml version="1.0" encoding="utf-8"?>
<GameMakerLanguageSpec xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" RuntimeVersion="2022.4" Module="Base">
	<Functions>
		<Function Name="animcurve_channel_evaluate" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to get the value at a specific point in time from a channel struct. You supply the struct pointer for the channel (as returned by the function animcurve_get_channel(), or as returned in the animation curve struct from the function animcurve_get()) and the &quot;x&quot; (time) position along the curve channel to evaluate. This position should be between 0 and 1, and the function will return the curve value at that position, or it will return 0 if the channel struct supplied is invalid.</Description>
			<Parameter Name="channel_struct" Type="Struct.AnimCurveChannel" Optional="false">The struct pointer for the channel to evaluate.</Parameter>
			<Parameter Name="posx" Type="Real" Optional="false">The position in time to check (from 0 to 1).</Parameter>
		</Function>
		<Function Name="animcurve_channel_new" Deprecated="false" ReturnType="Struct.AnimCurveChannel" Pure="true">
			<Description>This function can be used to create a new animation curve channel struct. A channel struct has the following variables:</Description>
		</Function>
		<Function Name="animcurve_create" Deprecated="false" ReturnType="Struct.AnimCurve" Pure="true">
			<Description>This function will create an empty animation curve struct, ready for you to populate with channel data. The function will return a pointer to the struct and this is then used to add channels and other data to the animation curve. You can also supply this to functions like animcurve_get() to later get the data from the curve.</Description>
		</Function>
		<Function Name="animcurve_destroy" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to destroy any animation curves that have been previously created with the function animcurve_create(). Calling this function will remove the animation curve from memory and clean up any channels or points that it contains as well (these never need to be cleaned up manually). Note that you cannot destroy any animation curves created in the asset browser, only those created at runtime.</Description>
			<Parameter Name="curve_struct" Type="Struct.AnimCurve" Optional="false">The pointer to the curve struct to destroy.</Parameter>
		</Function>
		<Function Name="animcurve_get" Deprecated="false" ReturnType="Struct.AnimCurve" Pure="true">
			<Description>This function will return a struct containing all the data for the given animation curve. You supply the animation curve asset ID (as defined in the Asset Browser), and the function will return a struct with the following variables:</Description>
			<Parameter Name="curve_id" Type="Asset.GMAnimCurve" Optional="false">The asset browser ID (index) of the animation curve to get.</Parameter>
		</Function>
		<Function Name="animcurve_get_channel" Deprecated="false" ReturnType="Struct.AnimCurveChannel" Pure="true">
			<Description>This function will return the struct containing the channel data for the channel specified in an animation curve asset. You supply the animation curve ID or struct as well as the channel name or index, and the function will return a struct with the following format:</Description>
			<Parameter Name="curve_struct_or_id" Type="Any" Optional="false">The ID or struct pointer of the animation curve to target</Parameter>
			<Parameter Name="channel_name_or_index" Type="Any" Optional="false">The channel name (a string) or the channel index (an integer).</Parameter>
		</Function>
		<Function Name="animcurve_get_channel_index" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the index value for any given animation curve channel. You supply the animation curve ID or struct, where the curve ID is the name of the animation curve as it was defined in the Asset Browser, or the struct pointer as returned by the function animcurve_create(). You then supply the name of the channel, as a string, and the function will return the index value associated with that channel. Note that if the curve or channel does not exist then you will get an error.</Description>
			<Parameter Name="curve_struct_or_id" Type="Any" Optional="false">The ID or struct pointer of the animation curve to target</Parameter>
			<Parameter Name="channel_name" Type="String" Optional="false">The channel name (a string).</Parameter>
		</Function>
		<Function Name="animcurve_point_new" Deprecated="false" ReturnType="Struct.AnimCurvePoint" Pure="true">
			<Description>This function can be used to create a new points struct to be added to an animation curve channel. When created a points struct is empty and you need to set the following variables to generate the point data:</Description>
		</Function>
		<Function Name="asset_add_tags" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>With this function you can add one or more tag strings to any asset from the asset browser. You supply either the asset name (as a string) or its asset index, as well as either a single tag string or an array where each item is a single tag string. If you supply an asset index value, then you will need to supply the optional asset type argument (a constant), as assets of different types can have the same index, even though they cannot have the same name. The available asset types are listed in the table below:</Description>
			<Parameter Name="name_or_index" Type="Any" Optional="false">The name of the asset (a string) or its index value (an integer).</Parameter>
			<Parameter Name="tags" Type="String,Array[String]" Optional="false">A single asset tag string or an array with various asset tags.</Parameter>
			<Parameter Name="asset_type" Type="Constant.AssetType" Optional="true">OPTIONAL! The type of asset to set the tags on, only used when supplying an index for the first argument.</Parameter>
		</Function>
		<Function Name="asset_clear_tags" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>With this function you can clear all the tags present on any asset from the asset browser. You supply either the asset name (as a string) or its asset index, and if you supply an asset index value, then you will need to supply the optional asset type argument (a constant), as assets of different types can have the same index, even though they cannot have the same name. The available asset types are listed in the table below:</Description>
			<Parameter Name="name_or_index" Type="Any" Optional="false">The name of the asset (a string) or its index value (an integer).</Parameter>
			<Parameter Name="asset_type" Type="Constant.AssetType" Optional="true">OPTIONAL! The type of asset to clear the tags from, only used when supplying an index for the first argument.</Parameter>
		</Function>
		<Function Name="asset_get_index" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>You can use this function to get the unique identifying index for a game asset from its name. If the asset is not found, the function will return a value of -1, otherwise it will return the unique index id for the asset being checked. This id can then be used in other functions as you would any other index value, like the sprite_index or the path_index, for example. Please note that although this function can be used to reference assets from strings (see example below) you should always make sure that the asset exists before using it otherwise you may get errors that will crash your game.</Description>
			<Parameter Name="name" Type="String" Optional="false">The name of the game asset to get the index of (a string).</Parameter>
		</Function>
		<Function Name="asset_get_tags" Deprecated="false" ReturnType="Array[String]" Pure="true">
			<Description>With this function you can retrieve all the tags assigned to an asset from the Asset Browser. You supply either the asset name (as a string) or it&apos;s asset index, and the function will return an array of tags for that asset. If no tags are found or there is an error (ie: the name string given doesn&apos;t exist) then the returned array will be empty. If you supply an asset index value, then you will need to supply the optional asset type argument (a constant), as assets of different types can have the same index, even though they cannot have the same name. The available asset types are listed in the table below:</Description>
			<Parameter Name="name_or_index" Type="Any" Optional="false">The name of the asset (a string) or its index value (an integer).</Parameter>
			<Parameter Name="asset_type" Type="Constant.AssetType" Optional="true">OPTIONAL! The type of asset to get the tags for, only used when supplying an index for the first argument.</Parameter>
		</Function>
		<Function Name="asset_get_type" Deprecated="false" ReturnType="Constant.AssetType" Pure="true">
			<Description>With this function you can get the type of asset being referenced from its name (a string). One of the constants listed below will be returned.</Description>
			<Parameter Name="name" Type="String" Optional="false">The name of the game asset to get the type of (a string).</Parameter>
		</Function>
		<Function Name="asset_has_tags" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check to see if one or more tag strings is assigned to any asset from the asset browser. You supply either the asset name (as a string) or its asset index, as well as either a single tag string or an array where each item is a single tag string. If you supply an asset index value, then you will need to supply the optional asset type argument (a constant), as assets of different types can have the same index, even though they cannot have the same name. The available asset types are listed in the table below:</Description>
			<Parameter Name="name_or_index" Type="Any" Optional="false">The name of the asset (a string) or its index value (an integer).</Parameter>
			<Parameter Name="tags" Type="String,Array[String]" Optional="false">A single asset tag string or an array with various asset tags.</Parameter>
			<Parameter Name="asset_type" Type="Constant.AssetType" Optional="true">OPTIONAL! The type of asset to check the tags for, only used when supplying an index for the first argument.</Parameter>
		</Function>
		<Function Name="asset_remove_tags" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>With this function you can remove one or more tag strings to any asset from the asset browser. You supply either the asset name (as a string) or its asset index, as well as either a single tag string or an array where each item is a single tag string. If you supply an asset index value, then you will need to supply the optional asset type argument (a constant), as assets of different types can have the same index, even though they cannot have the same name. The available asset types are listed in the table below:</Description>
			<Parameter Name="name_or_index" Type="Any" Optional="false">The name of the asset (a string) or its index value (an integer).</Parameter>
			<Parameter Name="tags" Type="Any" Optional="false">A single asset tag string or an array with various asset tags.</Parameter>
			<Parameter Name="asset_type" Type="Constant.AssetType" Optional="true">OPTIONAL! The type of asset to remove the tags from, only used when supplying an index for the first argument.</Parameter>
		</Function>
		<Function Name="tag_get_assets" Deprecated="false" ReturnType="Array[String]" Pure="true">
			<Description>With this function you can retrieve the names of all assets that have been assigned the given tag or tags. You supply either a single tag string or an array, where each item in the array is a tag string. The function will return an array where each entry is the name (as a string) of the asset with the given tag. If you need the unique index for the asset, then you can use the function asset_get_index() along with the returned name. If there are no assets with the given tag(s), or if there is an error (eg: the given tags do not exist), then an empty array will be returned.</Description>
			<Parameter Name="tags" Type="String,Array[String]" Optional="false">A single asset tag string or an array with various asset tags.</Parameter>
		</Function>
		<Function Name="tag_get_asset_ids" Deprecated="false" ReturnType="Array[Asset]" Pure="true">
			<Description>With this function you can get all the assets of a given type that have the given tags assigned to them. You supply either a single tag (as a string) or an array, where each item in the array is a tag (as a string), as well as the type of asset to check. the type of asset should be one of the following constants:</Description>
			<Parameter Name="tags" Type="String,Array[String]" Optional="false">A single asset tag string or an array with various asset tags.</Parameter>
			<Parameter Name="asset_type" Type="Constant.AssetType" Optional="false">An asset type constant (listed above)</Parameter>
		</Function>
		<Function Name="audio_channel_num" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can set how many audio channels are available for playing audio in GameMaker. What this basically means is that you give the number of simultaneous sounds that can be played at any one time, and if the number exceeds the amount, those sounds with a lower priority are stopped to free up a channel for the sounds with a higher priority. You can use this function to optimise your game for devices as the lower the number of channels for audio the better the performance, but bear in mind that this may also cause noticeable cut off of certain sounds if many are played at once.</Description>
			<Parameter Name="num" Type="Real" Optional="false">Number of available audio channels (default is 128).</Parameter>
		</Function>
		<Function Name="audio_create_stream" Deprecated="false" ReturnType="Asset.GMSound" Pure="true">
			<Description>With this function you can create a new sound index which can then be used in the regular audio functions to stream audio directly from an external OGG file source. The function requires the filename (which can be an included file, for example) and will return the new sound index for use. Note that after you no longer need the sound you should call the function audio_destroy_stream() with the sound index to remove it from memory otherwise you may get a memory leak which will slow down and eventually crash your game.</Description>
			<Parameter Name="filename" Type="String" Optional="false">The file (OGG only) to stream the audio from.</Parameter>
		</Function>
		<Function Name="audio_debug" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to display debug information about the audio system, with true switching it on and false to switch it off. When you are debugging audio in this way, the overlay will show the following information:</Description>
			<Parameter Name="enable" Type="Bool" Optional="false">Enable (set to true) or disable (false) audio debugging.</Parameter>
		</Function>
		<Function Name="audio_destroy_stream" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>If you have previously created an audio stream from a file using the function audio_create_stream() and no longer need that sound, you can call this function to delete it from memory. Any further calls to the sound index after it has been destroyed will give an error. It should be noted that this will free up the stream but on the target platform this may not show up in a memory manager. This is because GameMaker pools memory resources to prevent memory allocation overhead, and so the memory will remain allocated until required for something else or re-used for a new stream.</Description>
			<Parameter Name="filename" Type="String" Optional="false">The file to stream the audio from.</Parameter>
		</Function>
		<Function Name="audio_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function returns whether a sound exists (true) or not (false). Note that if the index you search for has not been initialised previously, this function will cause an error as it is searching for non-existent asset indices. The sound to check can either be a single instance of a sound (the index for individual sounds being played can be stored in a variable when using the audio_play_sound() or audio_play_sound_at() functions) or a sound asset.</Description>
			<Parameter Name="index" Type="Asset.GMSound,Id.Sound" Optional="false">The index of the sound to check the existence of.</Parameter>
		</Function>
		<Function Name="audio_falloff_set_model" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>To add more versatility to the audio engine, GameMaker permits you to select the falloff model that suits your game. This model will be used for all the audio functions in the game or app, and so you should make sure that the model you choose is the correct one, as each one will affect how the listener perceives the sounds you play through emitters or with the function audio_play_sound_at.</Description>
			<Parameter Name="model" Type="Constant.AudioFalloff" Optional="false">The constant used to set the falloff model.</Parameter>
		</Function>
		<Function Name="audio_get_master_gain" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the absolute value for the global volume of all sounds and music for a specific listener. The default listener index is 0, but you can use the function audio_get_listener_info() to get the different indices available for the target platform. The gain value returned is based on a linear scale from 0 (silent) to 1 (full volume). Note that on some platforms you can have a gain of greater than 1, although a value of 1 is considered &quot;full volume&quot; and anything greater may introduce audio clipping.</Description>
			<Parameter Name="listenerindex" Type="Id.AudioListener" Optional="false">The index of the listener to get the gain of.</Parameter>
		</Function>
		<Function Name="audio_get_name" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function will return the name of a given audio resource as a string. The &quot;index&quot; value can be that of the resource itself (as seen in the Asset Browser) or the unique ID value that is given when you play the sound using, for example, audio_play_sound(). Note that the string returned is not the same as the resource ID and cannot be used to access the resource itself, so should only be used for displaying or error checking.</Description>
			<Parameter Name="index" Type="Id.Sound,Asset.GMSound" Optional="false">The index of the sound to check.</Parameter>
		</Function>
		<Function Name="audio_get_type" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>When adding audio to GameMaker it can be either streamed or in memory. If you need to know whether a given sound index is for streamed audio or not you can use this function which will return 1 for streamed, 0 for sound in memory, and -1 if there is any error or the index does not point to a valid sound resource.</Description>
			<Parameter Name="index" Type="Id.Sound,Asset.GMSound" Optional="false">The index of the sound to check.</Parameter>
		</Function>
		<Function Name="audio_is_paused" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will check the given sound to see if it is currently paused. The sound can either be a single instance of a sound (the index for individual sounds being played can be stored in a variable when using the audio_play_sound() or audio_play_sound_at() functions) or a sound asset, in which case all instances of the given sound will be checked and if any of them are paused the function will return true otherwise it will return false.</Description>
			<Parameter Name="index" Type="Id.Sound,Asset.GMSound" Optional="false">The index of the sound to check.</Parameter>
		</Function>
		<Function Name="audio_is_playing" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will check the given sound to see if it is currently playing. The sound can either be a single instance of a sound (the index for individual sounds being played can be stored in a variable when using the audio_play_sound() or audio_play_sound_at() functions) or a sound asset, in which case all instances of the given sound will be checked and if any of them are playing the function will return true otherwise it will return false. Note that this function will still return true if the sound being checked has previously been paused using the audio_pause_sound() function.</Description>
			<Parameter Name="index" Type="Id.Sound,Asset.GMSound" Optional="false">The index of the sound to check.</Parameter>
		</Function>
		<Function Name="audio_master_gain" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the absolute value for the global volume of all sounds and music. It is based on a linear scale from 0 (silent) to any value greater than 0, although normally you&apos;d consider the maximum volume as 1. Anything over 1 can be used but, depending on the sound used and the platform being compiled to, you may get distortion or clipping when the sound is played back. This function will affect the relative volume of all sounds and music played from within your game.</Description>
			<Parameter Name="gain" Type="Real" Optional="false">Value for the global volume (0 to 1).</Parameter>
		</Function>
		<Function Name="audio_pause_all" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can pause all sounds that are currently playing.</Description>
		</Function>
		<Function Name="audio_pause_sound" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can pause any sound that is currently playing. The sound can either be a single instance of a sound (the index for individual sounds being played can be stored in a variable when using the audio_play_sound() or audio_play_sound_at() functions) or a sound asset, in which case all instances of the given sound will be paused.</Description>
			<Parameter Name="index" Type="Id.Sound,Asset.GMSound" Optional="false">The index of the sound to pause.</Parameter>
		</Function>
		<Function Name="audio_play_sound" Deprecated="false" ReturnType="Id.Sound" Pure="false">
			<Description>With this function you can play any sound resource in your game. You provide the sound index and assign it a priority, which is then used to determine how sounds are dealt with when the number of sounds playing is over the limit set by the function audio_channel_num(). Lower priority sounds will be stopped in favour of higher priority sounds, and the priority value can be any real number (the actual value is arbitrary, and can be from 0 to 1 or 0 to 100, as GameMaker will prioritize them the same). Note that when dealing with priority, the higher the number the higher the priority, such that a sound with priority 100 will be favoured over a sound with priority 1. The final argument is for making the sound loop and setting it to true will make the sound loop until it is stopped and setting it to false will play the sound once only.</Description>
			<Parameter Name="index" Type="Asset.GMSound" Optional="false">The index of the sound to play.</Parameter>
			<Parameter Name="priority" Type="Real" Optional="false">Set the channel priority for the sound.</Parameter>
			<Parameter Name="loop" Type="Bool" Optional="false">Sets the sound to loop or not.</Parameter>
			<Parameter Name="gain" Type="Real" Optional="true">Sets the gain of the sound played.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="true">Sets the start offset (in seconds) of the sound played.</Parameter>
			<Parameter Name="pitch" Type="Real" Optional="true">Sets the pitch of the sound played.</Parameter>
			<Parameter Name="listener_mask" Type="Real" Optional="true">Sets the listener mask of the sound played.</Parameter>
		</Function>
		<Function Name="audio_play_sound_at" Deprecated="false" ReturnType="Id.Sound" Pure="false">
			<Description>With this function you can play any sound resource at a given position within the audio space. You provide the sound index and then assign it a position within the 3D space. The default listener position is (0, 0, 0) so this means that if the listener has not been moved and you want the sound to come from the left (for example), you should set the x position to a negative value (for more information on setting the listener position see audio_listener_position()).</Description>
			<Parameter Name="index" Type="Asset.GMSound" Optional="false">The index of the sound to play.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position.</Parameter>
			<Parameter Name="z" Type="Real" Optional="false">The z position.</Parameter>
			<Parameter Name="falloff_ref" Type="Real" Optional="false">The falloff reference relative to the listener (clamp).</Parameter>
			<Parameter Name="falloff_max" Type="Real" Optional="false">The maximum falloff distance relative to the listener.</Parameter>
			<Parameter Name="falloff_factor" Type="Real" Optional="false">The falloff factor (default 1).</Parameter>
			<Parameter Name="loop" Type="Bool" Optional="false">Flags the sound as looping or not.</Parameter>
			<Parameter Name="priority" Type="Real" Optional="false">Set the channel priority for the sound.</Parameter>
			<Parameter Name="gain" Type="Real" Optional="true">Sets the gain of the sound played.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="true">Sets the start offset (in seconds) of the sound played.</Parameter>
			<Parameter Name="pitch" Type="Real" Optional="true">Sets the pitch of the sound played.</Parameter>
			<Parameter Name="listener_mask" Type="Real" Optional="true">Sets the listener mask of the sound played.</Parameter>
		</Function>
		<Function Name="audio_play_sound_ext" Deprecated="false" ReturnType="Id.Sound" Pure="false">
			<Description>With this function you can play any sound resource in your game. You provide a struct which contains a set of required parameters as well as any additional playback parameters. Parameters not specified will fall back to their default values/behaviour.</Description>
			<Parameter Name="params" Type="Struct" Optional="false">A struct containing a set of playback parameters.</Parameter>
		</Function>
		<Function Name="audio_resume_all" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can resume all sounds that have been paused previously.</Description>
		</Function>
		<Function Name="audio_resume_sound" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can resume any sound that is currently paused (after using the function audio_pause_sound()). The sound can either be a single instance of a sound (the index for individual sounds being played can be stored in a variable when using the audio_play_sound() or audio_play_sound_at() functions) or a sound asset, in which case all instances of the given sound will be re-started.</Description>
			<Parameter Name="index" Type="Asset.GMSound,Id.Sound" Optional="false">The index of the sound to resume.</Parameter>
		</Function>
		<Function Name="audio_set_master_gain" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the absolute value for the global volume of all sounds and music for a specific listener. The default listener index is 0, but you can use the function audio_get_listener_info() to get the different indices available for the target platform. The gain value is based on a linear scale from 0 (silent) to 1 (full volume) and will affect the relative volume of all sounds and music played from within your game through that listener.</Description>
			<Parameter Name="listenerindex" Type="Id.AudioListener" Optional="false">The index of the listener to set the gain on.</Parameter>
			<Parameter Name="gain" Type="Real" Optional="false">Value for the global volume (0 to 1).</Parameter>
		</Function>
		<Function Name="audio_sound_gain" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can fade a sound in or out over a given length of time, or it can be used to set the sound gain instantly. The time is measured in milliseconds, and the function requires that you input a final level of gain for the sound to have reached by the end of that time. This gain can be between 0 (silent) and any value greater than 0, although normally you&apos;d consider the maximum volume as 1. Anything over 1 can be used but, depending on the sound used and the platform being compiled to, you may get distortion or clipping when the sound is played back. Note that the gain scale is linear, and to instantly change the gain, simply set the time argument to 0.</Description>
			<Parameter Name="index" Type="Asset.GMSound,Id.Sound" Optional="false">The index of the sound to set the gain for.</Parameter>
			<Parameter Name="volume" Type="Real" Optional="false">Value for the music volume.</Parameter>
			<Parameter Name="time" Type="Real" Optional="false">The length for the change in gain in milliseconds.</Parameter>
		</Function>
		<Function Name="audio_sound_get_gain" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the current gain value for the given sound. The sound can either be one referenced from an index for an individual sound being played which has been stored in a variable when using the audio_play_sound() or audio_play_sound_at() functions, or an actual sound asset from the Asset Browser. Gain is usually calculated as a value from 0 to 1, but on some platforms you can have a gain of greater than 1, although a value of 1 is considered &quot;full volume&quot; and anything greater may introduce audio clipping.</Description>
			<Parameter Name="index" Type="Asset.GMSound,Id.Sound" Optional="false">The index of the sound to get the gain of.</Parameter>
		</Function>
		<Function Name="audio_sound_get_listener_mask" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the bit-mask data that defines which audio listeners a sound should be played from. See the section on Audio Listeners for more information.</Description>
			<Parameter Name="soundid" Type="Asset.GMSound,Id.Sound" Optional="false">The unique ID of the sound to get the mask of</Parameter>
		</Function>
		<Function Name="audio_sound_get_pitch" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to get the get pitch of a given sound. The sound can either be one referenced from an index for an individual sound being played which has been stored in a variable when using the audio_play_sound() or audio_play_sound_at() functions, or an actual sound asset from the Asset Browser.</Description>
			<Parameter Name="index" Type="Asset.GMSound,Id.Sound" Optional="false">The index of the sound to get the pitch of.</Parameter>
		</Function>
		<Function Name="audio_sound_get_track_position" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will get the position (in seconds) within the sound file for the sound to play from. The sound can only be a single instance of a sound (the index for individual sounds being played can be stored in a variable when using the audio_play_sound() or audio_play_sound_at() functions).</Description>
			<Parameter Name="index" Type="Asset.GMSound,Id.Sound" Optional="false">The index of the sound to get the play position of.</Parameter>
		</Function>
		<Function Name="audio_sound_is_playable" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function can be used to checks if the given sound index can be played currently. This is needed due to the different ways streamed and unstreamed sound playback is handled on the HTML5 target platform, and will return true if the sound can be played and false if it can&apos;t. Note that on all other platforms other than HTML5, the function will always return true..</Description>
			<Parameter Name="index" Type="Asset.GMSound,Id.Sound" Optional="false">The index of the sound to check.</Parameter>
		</Function>
		<Function Name="audio_sound_length" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the length of the given sound in seconds. The sound can either be a referenced from index for an individual sound being played which has been stored in a variable when using the audio_play_sound() or audio_play_sound_at() functions, or an actual sound asset from the Asset Browser.</Description>
			<Parameter Name="index" Type="Asset.GMSound,Id.Sound" Optional="false">The index of the sound to check.</Parameter>
		</Function>
		<Function Name="audio_sound_pitch" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to change the pitch of a given sound. The sound can either be one referenced from an index for an individual sound being played which has been stored in a variable when using the audio_play_sound() or audio_play_sound_at() functions, or an actual sound asset from the Asset Browser. If it is an index of a playing sound, then only that instance will be changed, however when using a sound asset from the Asset Browser, all further instances being played of that sound will be changed.</Description>
			<Parameter Name="index" Type="Asset.GMSound,Id.Sound" Optional="false">The index of the sound to change.</Parameter>
			<Parameter Name="pitch" Type="Real" Optional="false">The pitch multiplier (default 1).</Parameter>
		</Function>
		<Function Name="audio_sound_set_listener_mask" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set the the bit-mask for a sound so that it will play only from those listeners specified. You can create a bit-mask by using the audio_get_listener_info() and then using the bitwise or (&quot;|&quot;) to create a custom mask with those listeners that you require the sound to play from, and then apply this custom mask to the sound after you have played it. This mask will over-ride the default mask or that which you may have set using the function audio_set_listener_mask().</Description>
			<Parameter Name="soundid" Type="Asset.GMSound,Id.Sound" Optional="false">The unique ID of the sound to set the mask of</Parameter>
			<Parameter Name="mask" Type="Real" Optional="false">The bitmask data to set for the sound</Parameter>
		</Function>
		<Function Name="audio_sound_set_track_position" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will set the position (in seconds) within the sound file for the sound to play from. The sound can either be a single instance of a sound (the index for individual sounds being played can be stored in a variable when using the audio_play_sound() or audio_play_sound_at() functions) or a sound asset. If it is a unique sound ID that you use, then the position will change immediately to the new time given, and if it is a Asset Browser asset then all further plays of the given sound will start at the new time. The function will ignore any value given that is longer than the length of the sound given for the &quot;index&quot; value.</Description>
			<Parameter Name="index" Type="Asset.GMSound,Id.Sound" Optional="false">The index of the sound to change.</Parameter>
			<Parameter Name="time" Type="Real" Optional="false">The time (in seconds) to set the start point to.</Parameter>
		</Function>
		<Function Name="audio_sound_loop" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will set the state of a playing sound's loop section.</Description>
			<Parameter Name="index" Type="Id.Sound" Optional="false">The index of the sound to change.</Parameter>
			<Parameter Name="state" Type="Bool" Optional="false">The state that the loop section should be set to.</Parameter>
		</Function>
		<Function Name="audio_sound_get_loop" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will return the state of a playing sound's loop section.</Description>
			<Parameter Name="index" Type="Id.Sound" Optional="false">The index of the sound whose loop section state is retrieved.</Parameter>
		</Function>
		<Function Name="audio_sound_loop_start" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will set the offset (in seconds) of the start of a sound's loop section.</Description>
			<Parameter Name="index" Type="Asset.GMSound,Id.Sound" Optional="false">The index of the sound to change.</Parameter>
			<Parameter Name="time" Type="Real" Optional="false">The offset (in seconds) to set the start of the loop section to.</Parameter>
		</Function>
		<Function Name="audio_sound_get_loop_start" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the offset (in seconds) of the start of a sound's loop section.</Description>
			<Parameter Name="index" Type="Asset.GMSound,Id.Sound" Optional="false">The index of the sound whose loop-start is retrieved.</Parameter>
		</Function>
		<Function Name="audio_sound_loop_end" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will set the offset (in seconds) of the end of a sound's loop section.</Description>
			<Parameter Name="index" Type="Asset.GMSound,Id.Sound" Optional="false">The index of the sound to change.</Parameter>
			<Parameter Name="time" Type="Real" Optional="false">The offset (in seconds) to set the end of the loop section to.</Parameter>
		</Function>
		<Function Name="audio_sound_get_loop_end" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the offset (in seconds) of the end of a sound's loop section.</Description>
			<Parameter Name="index" Type="Asset.GMSound,Id.Sound" Optional="false">The index of the sound whose loop-end is retrieved.</Parameter>
		</Function>
		<Function Name="audio_stop_all" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will stop all sounds that are currently playing.</Description>
		</Function>
		<Function Name="audio_stop_sound" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will stop the given sound if it is currently playing. The sound can either be a single instance of a sound (the index for individual sounds being played can be stored in a variable when using the audio_play_sound() or audio_play_sound_at() functions) or a sound asset, in which case all instances of the given sound will be stopped.</Description>
			<Parameter Name="index" Type="Asset.GMSound,Id.Sound" Optional="false">The index of the sound to stop.</Parameter>
		</Function>
		<Function Name="audio_system_is_available" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function can be used to check and see if the audio system has been initialised, or if the audio context is running. On all platforms, this function will return true immediately after Game Start when the audio engine is initialised, except on the Opera GX and HTML5 targets. On Opera GX and HTML5, the audio context status can change at any time depending on user input, the browser being used, and its version, so this function can be used to check and see if audio can be played or not. If the function returns false (ie: the audio context status is not running), then only unstreamed sounds may play (but it&apos;s not guaranteed, and you should assume that no audio can be played), while if it returns true then all audio will play.</Description>
		</Function>
		<Function Name="audio_system_is_initialised" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function can be used to check if the audio engine has been initialised, after which all audio functions can be called normally. For all targets other than HTML5, this will return true on Game Start. On HTML5, this may only begin to return true after Game Start. While audio_system_is_available() reflects the ability to play audio, this function reflects the ability to call audio functions more generally.</Description>
		</Function>
		<Function Name="audio_create_buffer_sound" Deprecated="false" ReturnType="Asset.GMSound" Pure="true">
			<Description>With this function you can create a new sound from the contents of a buffer. The buffer will have been created previously (see the buffer functions for details on how to do this), and have had data added or loaded into it. You then pass it to this function with the data format (only buffer_u8 or buffer_s16 are currently supported), the sample rate (which can be between 1000hz and 48000hz), and an offset into the buffer to get the data from. You also need to supply the number of samples in the buffer and the channels that the sound requires. These channels are defined by one of the following constants:</Description>
			<Parameter Name="bufferId" Type="Id.Buffer" Optional="false">The ID of the buffer to use.</Parameter>
			<Parameter Name="bufferFormat" Type="Constant.BufferDataType" Optional="false">The format of the data in the buffer (buffer_u8 or buffer_s16).</Parameter>
			<Parameter Name="bufferRate" Type="Real" Optional="false">The sample rate of the data in the buffer.</Parameter>
			<Parameter Name="bufferOffset" Type="Real" Optional="false">The offset into the buffer to read the sample data from (in bytes).</Parameter>
			<Parameter Name="bufferLength" Type="Real" Optional="false">The length of the buffer (the number of bytes of audio data, excluding the header).</Parameter>
			<Parameter Name="bufferChannels" Type="Constant.AudioChannelType" Optional="false">The channels to use (audio_mono, audio_stereo or audio_3D).</Parameter>
		</Function>
		<Function Name="audio_create_play_queue" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function prepares a buffer queue for audio. You pass data format (only buffer_u8 or buffer_s16 are currently supported), the sample rate (which can be between 1000hz and 48000hz), and the channels that the audio requires from one of the constants listed below:</Description>
			<Parameter Name="queueformat" Type="Constant.BufferDataType" Optional="false">The format of the buffer data to use (buffer_u8 or buffer_s16).</Parameter>
			<Parameter Name="queuerate" Type="Real" Optional="false">The sample rate of the data in the buffer queue.</Parameter>
			<Parameter Name="queuechannels" Type="Real" Optional="false">The channels to use from one of the constants listed below.</Parameter>
		</Function>
		<Function Name="audio_free_buffer_sound" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can free up the pointer index value associated with the sound ID. Freed sounds will not be available for playing, and if multiple instances of the sound are being played they will all be stopped. Note that before you can delete the buffer itself, you must first free all sound ID&apos;s associated with it.</Description>
			<Parameter Name="index" Type="Real" Optional="false">The index of the buffered sound to free.</Parameter>
		</Function>
		<Function Name="audio_free_play_queue" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function is used to free up the memory associated with the given audio queue. The queue index is the value returned when you created the queue using the function audio_create_play_queue(), and this function should be called when the queue is no longer required to prevent memory leaks. Freeing the queue will stop any sound that is be playing, and you cannot delete the buffer that a sound is being streamed from until the queue it is assigned to has been freed. This function will trigger an Audio Playback Asynchronous Event, and in this event a special DS map will be created in the variable async_load with the following key/value pairs:</Description>
			<Parameter Name="queueindex" Type="Real" Optional="false">The index of the queue to free.</Parameter>
		</Function>
		<Function Name="audio_get_recorder_count" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the number of audio recording sources (like microphones, etc...) currently available to your game. So, if you have a return value of, for example, four, then you will have audio input on the sources 0, 1, 2 and 3, with one of these values being that which you use to start recording from using the function audio_start_recording(). This value can change at any time as people plug/unplug microphones or other input sources to the device. Note that you can use the function audio_get_recorder_info() to get information on each device connected.</Description>
		</Function>
		<Function Name="audio_get_recorder_info" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return a DS Map with information about the given recorder source index. You can find out how many recorder sources are available using the function audio_get_recorder_count(), and the map returned will contain the following key/value pairs:</Description>
			<Parameter Name="recorder_index" Type="Real" Optional="false">The index of the recorder source to get the information from.</Parameter>
		</Function>
		<Function Name="audio_queue_sound" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will add the data from a buffer into the audio queue that you previously created using the function audio_create_play_queue(). You specify the queue index to add to, and the buffer ID to get the data from as well as the position (offset) within the buffer and the number of bytes to add. Once you have added audio from a buffer to a queue, the buffer cannot be deleted until you have first freed the queue using the function audio_free_play_queue(), and the buffer properties should match those of the the queue that you are adding the sound to.</Description>
			<Parameter Name="queueindex" Type="Real" Optional="false">The index of the queue to add to.</Parameter>
			<Parameter Name="bufferid" Type="Id.Buffer" Optional="false">The buffer to add to the queue.</Parameter>
			<Parameter Name="bufferoffset" Type="Real" Optional="false">The offset within the source buffer to start from.</Parameter>
			<Parameter Name="bufferlength" Type="Real" Optional="false">The length of the buffer (the number of the bytes in the buffer).</Parameter>
		</Function>
		<Function Name="audio_start_recording" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will start recording audio from the recorder source indexed. You can get the number of recorder sources using the function audio_get_recorder_count(), and once you start recording the audio will be stored in a temporary buffer and start triggering an Audio Recording Asynchronous Event. This event is triggered every step that recording takes place and will create the special DS map in the variable async_load with the following key/value pairs:</Description>
			<Parameter Name="recorder_index" Type="Real" Optional="false">The index of the recorder source to use.</Parameter>
		</Function>
		<Function Name="audio_stop_recording" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will stop recording on the given recorder channel (the channel index is returned when you call the function audio_start_recording()). When you stop recording, no further Audio Recording Asynchronous Events will be triggered for the given recorder channel, so you would normally use this function in the actual asynchronous event to ensure that you have captured all the data.</Description>
			<Parameter Name="channel_index" Type="Real" Optional="false">The index of the recorder channel to stop.</Parameter>
		</Function>
		<Function Name="audio_emitter_create" Deprecated="false" ReturnType="Id.AudioEmitter" Pure="true">
			<Description>This function creates a new audio emitter and returns the index for it. This index should be stored in a variable for all further functions that relate to this emitter, and then when it is no longer needed it should be removed from memory using the function audio_emitter_free() to prevent memory leaks which may eventually crash your game.</Description>
		</Function>
		<Function Name="audio_emitter_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function returns whether an audio emitter exists (true) or not (false). Note that if the index you search for has not been initialised previously, this function will cause an error as it is searching for non-existent indices.</Description>
			<Parameter Name="index" Type="Id.AudioEmitter" Optional="false">The index of the emitter to check the existence of.</Parameter>
		</Function>
		<Function Name="audio_emitter_falloff" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the fall-off distance for an emitter. This is the distance from the listener the emitter has to be before the sound will have &quot;fallen off&quot; to a volume of 0. The default value for this is 100, but beware of setting this to any value lower than 1 as that will make any sound played through this emitter inaudible to the listener, however any other value will cause the sound to fade away the further that the emitter is from the listener.</Description>
			<Parameter Name="emitter" Type="Id.AudioEmitter" Optional="false">The index of the emitter to change.</Parameter>
			<Parameter Name="falloff_ref" Type="Real" Optional="false">The falloff reference relative to the listener (clamp).</Parameter>
			<Parameter Name="falloff_max" Type="Real" Optional="false">The maximum falloff distance relative to the listener.</Parameter>
			<Parameter Name="falloff_factor" Type="Real" Optional="false">The falloff factor (default 1).</Parameter>
		</Function>
		<Function Name="audio_emitter_free" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can remove the given emitter from memory. This should always be done whenever the emitter is not going to be used further in the room or the game, ie: in the Destroy Event of the instance or in the Room End Event, otherwise you may end up with a memory leak that will slow down and eventually crash your game.</Description>
			<Parameter Name="emitter" Type="Id.AudioEmitter" Optional="false">The index of the emitter to free.</Parameter>
		</Function>
		<Function Name="audio_emitter_gain" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function sets the maximum gain (volume) for the sound. The perceived volume for a sound can change depending on the fall-off value and the position it has relative to the listener, but by setting the gain with this function, the full volume will never exceed the specified gain value. The image below illustrates how gain affects the volume of the emitter when fall-off is greater than 0:</Description>
			<Parameter Name="emitter" Type="Id.AudioEmitter" Optional="false">The index of the emitter to change.</Parameter>
			<Parameter Name="gain" Type="Real" Optional="false">The maximum gain (default 1).</Parameter>
		</Function>
		<Function Name="audio_emitter_get_gain" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the current gain (volume) set for the given audio emitter, normally between 0 and 1, where 0 is silent and 1 is full volume. Note that on some platforms you can have a gain of greater than 1, although a value of 1 is considered &quot;full volume&quot; and anything greater may introduce audio clipping.</Description>
			<Parameter Name="emitter" Type="Id.AudioEmitter" Optional="false">The index of the emitter to use.</Parameter>
		</Function>
		<Function Name="audio_emitter_get_listener_mask" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the bit-mask data that defines which audio listeners an emitter should play sounds from. For more information see the section on Audio Listeners.</Description>
			<Parameter Name="emitterid" Type="Id.AudioEmitter" Optional="false">The unique ID of the emitter to get the mask of</Parameter>
		</Function>
		<Function Name="audio_emitter_get_pitch" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the current pitch value set for the given audio emitter.</Description>
			<Parameter Name="emitter" Type="Id.AudioEmitter" Optional="false">The index of the emitter to use.</Parameter>
		</Function>
		<Function Name="audio_emitter_get_vx" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the current velocity along the x axis for the given audio emitter.</Description>
			<Parameter Name="emitter" Type="Id.AudioEmitter" Optional="false">The index of the emitter to use.</Parameter>
		</Function>
		<Function Name="audio_emitter_get_vy" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the current velocity along the y axis for the given audio emitter.</Description>
			<Parameter Name="emitter" Type="Id.AudioEmitter" Optional="false">The index of the emitter to use.</Parameter>
		</Function>
		<Function Name="audio_emitter_get_vz" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the current velocity along the z axis for the given audio emitter.</Description>
			<Parameter Name="emitter" Type="Id.AudioEmitter" Optional="false">The index of the emitter to use.</Parameter>
		</Function>
		<Function Name="audio_emitter_get_x" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the current x position of the given audio emitter.</Description>
			<Parameter Name="emitter" Type="Id.AudioEmitter" Optional="false">The index of the emitter to use.</Parameter>
		</Function>
		<Function Name="audio_emitter_get_y" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the current y position of the given audio emitter.</Description>
			<Parameter Name="emitter" Type="Id.AudioEmitter" Optional="false">The index of the emitter to use.</Parameter>
		</Function>
		<Function Name="audio_emitter_get_z" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the current z position of the given audio emitter.</Description>
			<Parameter Name="emitter" Type="Id.AudioEmitter" Optional="false">The index of the emitter to use.</Parameter>
		</Function>
		<Function Name="audio_emitter_pitch" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to change the pitch of all sounds emitted from the given emitter. It is a pitch multiplier, in that the input value multiplies the current pitch by that amount, so the default value of 1 is no pitch change, while a value of less than 1 will lower the pitch and greater than 1 will raise the pitch. It is best to use small increments for this function as any value under 0 or over 5 may not be audible anyway.</Description>
			<Parameter Name="emitter" Type="Id.AudioEmitter" Optional="false">The index of the emitter to change.</Parameter>
			<Parameter Name="pitch" Type="Real" Optional="false">The pitch multiplier (default 1).</Parameter>
		</Function>
		<Function Name="audio_emitter_position" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can change the position of an audio emitter within the 3D audio space. The position will affect the sound in different ways depending on where the listener is positioned within the audio space too (default position is (0, 0, 0). See audio_listener_position() for more information), so for example if the emitter position is set to (100, 0, 0) and the current listener is at (200, 0, 0) the audio streamed from the emitter will appear to be on the left of the audio field. The image below shows a visual representation of emitters and their relative positions to the listener:</Description>
			<Parameter Name="emitter" Type="Id.AudioEmitter" Optional="false">The index of the emitter to change.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position.</Parameter>
			<Parameter Name="z" Type="Real" Optional="false">The z position.</Parameter>
		</Function>
		<Function Name="audio_emitter_set_listener_mask" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set the the bit-mask for an emitter so that all sounds played through the emitter will play only from those listeners specified. You can create a bit-mask by using the audio_get_listener_info() and then using the bitwise or (&quot;|&quot;) to create a custom mask with those listeners that you require the sound to play from, and then apply this custom mask to the emitter. This mask will over-ride the default mask or that which you may have set using the function audio_set_listener_mask().</Description>
			<Parameter Name="emitterid" Type="Id.AudioEmitter" Optional="false">The unique ID of the emitter to set the mask of</Parameter>
			<Parameter Name="mask" Type="Real" Optional="false">The bitmask data to set for the sound</Parameter>
		</Function>
		<Function Name="audio_emitter_velocity" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to give an emitter Doppler effects and simulate audio motion based on the vector that is resolved from the given relative x, y and z positions. If the emitter itself is not ever going to move you would normally not need to set these values, but, for example, if you are making a scrolling shooter game where the enemies come from the right and scroll to the left, you would set this to have a velocity of (hspeed, 0, 0) in the create event of the enemies (and update the emitter of each instance in the step event using audio_emitter_position()) to give any sounds emitted by the enemy instances the correct Doppler as they pass the player instance (which in turn would be using the function audio_listener_position() to set the listener to the correct position).</Description>
			<Parameter Name="emitter" Type="Id.AudioEmitter" Optional="false">The index of the emitter to change.</Parameter>
			<Parameter Name="vx" Type="Real" Optional="false">The x vector value (default 0).</Parameter>
			<Parameter Name="vy" Type="Real" Optional="false">The y vector value (default 0).</Parameter>
			<Parameter Name="vz" Type="Real" Optional="false">The z vector value (default 0).</Parameter>
		</Function>
		<Function Name="audio_play_sound_on" Deprecated="false" ReturnType="Id.Sound" Pure="false">
			<Description>With this function you can play any sound resource through an emitter, with any changes to the emitter gain, position, pitch or velocity affecting how the user hears the final sound being played. You provide the emitter index to use, the sound index of the sound to be played and then specify whether the sound is to loop or not. Finally you can assign a priority, which is then used to determine how sounds are dealt with when the number of sounds playing is over the limit set by the function audio_channel_num(). Lower priority sounds will be stopped in favour of higher priority sounds, and the priority value can be any real number (the actual value is arbitrary, and can be from 0 to 1 or 0 to 100, as GameMaker will prioritize them the same). Note that when dealing with priority, the higher the number the higher the priority, such that a sound with priority 100 will be favoured over a sound with priority 1.</Description>
			<Parameter Name="emitter" Type="Id.AudioEmitter" Optional="false">The index of the emitter to use.</Parameter>
			<Parameter Name="sound" Type="Asset.GMSound" Optional="false">The index of the sound to use.</Parameter>
			<Parameter Name="loop" Type="Bool" Optional="false">Flags the sound as looping or not.</Parameter>
			<Parameter Name="priority" Type="Real" Optional="false">Set the channel priority for the sound.</Parameter>
			<Parameter Name="gain" Type="Real" Optional="true">Sets the gain of the sound played.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="true">Sets the start offset (in seconds) of the sound played.</Parameter>
			<Parameter Name="pitch" Type="Real" Optional="true">Sets the pitch of the sound played.</Parameter>
			<Parameter Name="listener_mask" Type="Real" Optional="true">Sets the listener mask of the sound played.</Parameter>
		</Function>
		<Function Name="audio_group_is_loaded" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will check a specific audio group to see if it has been loaded into memory, ready for use.</Description>
			<Parameter Name="groupid" Type="Asset.GMAudioGroup" Optional="false">The index of the audio group to check (as defined in the Audio Groups Window)</Parameter>
		</Function>
		<Function Name="audio_group_load" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>This function will load all the sounds that are flagged as belonging to the given Audio Group into memory. The function will return true if loading is initiated and false if the group ID is invalid, or it has already been flagged for loading. The function is asynchronous so your game will continue to run while the audio is loaded in the background. This means that it will also trigger an Asynchronous Load/Save Event to inform you that the whole group has been loaded into memory and the sounds can now be used.</Description>
			<Parameter Name="groupid" Type="Asset.GMAudioGroup" Optional="false">The index of the audio group to load (as defined in the Audio Groups Window)</Parameter>
		</Function>
		<Function Name="audio_group_load_progress" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will check the loading progress for an audio group and return an (approximate) value between 0 and 100.</Description>
			<Parameter Name="groupid" Type="Asset.GMAudioGroup" Optional="false">The index of the audio group to check (as defined in the Audio Groups Window)</Parameter>
		</Function>
		<Function Name="audio_group_name" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function will return a string containing the name of the given audio group for displaying or checking. When you define an audio group in the Game Options, you give it a unique &quot;name&quot; which is really a constant to use as an ID value for the group. All this function does is take the ID and return a string of the ID name you gave.</Description>
			<Parameter Name="groupid" Type="Asset.GMAudioGroup" Optional="false">The index value constant of the audio group to check (as defined in the Audio Groups Window)</Parameter>
		</Function>
		<Function Name="audio_group_set_gain" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can fade a group of sounds in or out over a given length of time, or it can be used to set the group gain instantly. The time is measured in milliseconds, and the function requires that you input a final level of gain for the group to have reached by the end of that time. This gain can be between 0 (silent) and 1 (full volume) and the scale is linear, such that a value of 0.5 would be half volume. To instantly change the gain, simply set the time argument to 0. Note that on some platforms you can have a gain of greater than 1, although a value of 1 is considered &quot;full volume&quot; and anything greater may introduce audio clipping.</Description>
			<Parameter Name="groupid" Type="Asset.GMAudioGroup" Optional="false">The index of the audio group to stop (as defined in the Audio Groups Window)</Parameter>
			<Parameter Name="volume" Type="Real" Optional="false">The final value for the group volume.</Parameter>
			<Parameter Name="time" Type="Real" Optional="false">The length of the change in gain in milliseconds.</Parameter>
		</Function>
		<Function Name="audio_group_get_gain" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the group gain of a given audio group.</Description>
			<Parameter Name="groupid" Type="Asset.GMAudioGroup" Optional="false">The index of the audio group to check (as defined in the Audio Groups window)</Parameter>
		</Function>
		<Function Name="audio_group_stop_all" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will stop all sounds from the given audio group that are currently playing.</Description>
			<Parameter Name="groupid" Type="Asset.GMAudioGroup" Optional="false">The index of the audio group to stop (as defined in the Audio Groups Window)</Parameter>
		</Function>
		<Function Name="audio_group_unload" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>This function will unload all the sounds that are flagged as belonging to the given Audio Group into memory. The function will return true if unloading is initiated and false if the group ID is invalid, or it has already been flagged for unloading. Note that any audio currently being played when this function is called will be stopped.</Description>
			<Parameter Name="groupid" Type="Asset.GMAudioGroup" Optional="false">The index of the audio group to unload (as defined in the Audio Groups Window)</Parameter>
		</Function>
		<Function Name="audio_group_get_assets" Deprecated="false" ReturnType="Array[Asset.GMSound]" Pure="true">
			<Description>This function will return an array containing the asset index of each audio asset in the given audio group.</Description>
			<Parameter Name="group_index" Type="Asset.GMAudioGroup" Optional="false">The index of the audio group whose asset indices should be retrieved.</Parameter>
		</Function>
		<Function Name="audio_sound_get_audio_group" Deprecated="false" ReturnType="Asset.GMAudioGroup" Pure="true">
			<Description>This function will return the index of the audio group that is associated with the given sound index.</Description>
			<Parameter Name="sound_index" Type="Asset.GMSound,Id.Sound" Optional="false">The index of the sound whose audio group should be retrieved.</Parameter>
		</Function>
		<Function Name="audio_get_listener_count" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Certain target platforms permit more than one listener, so it is important that you know how many the target has before changing or using different listeners. This function will return the number of listeners available.</Description>
		</Function>
		<Function Name="audio_get_listener_info" Deprecated="false" ReturnType="Id.DsMap" Pure="true">
			<Description>This function will create a DS map and populate it with information for the given listener.</Description>
			<Parameter Name="num" Type="Real" Optional="false">The listener number to get the data for.</Parameter>
		</Function>
		<Function Name="audio_get_listener_mask" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the bit-mask data that defines the current default (global) mask for the audio listeners.</Description>
		</Function>
		<Function Name="audio_listener_get_data" Deprecated="false" ReturnType="Id.DsMap" Pure="true">
			<Description>This function will create a DS map and populate it with the position, velocity and orientation values for the given listener. The default listener index is 0, but you can use the function audio_get_listener_info() to get the different indices available for the target platform. If you provide an incorrect listener index then the function will return -1.</Description>
			<Parameter Name="index" Type="Real" Optional="false">The listener to get the data for (default 0).</Parameter>
		</Function>
		<Function Name="audio_listener_orientation" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can change the orientation of the listener within the 3D audio space. The look at direction and up direction are based on the vectors that are resolved from the given relative x, y and z positions, and default to (0, 0, 1000) for the look at direction and (0, 1, 0) for the up direction, as shown in the illustration below:</Description>
			<Parameter Name="lookat_x" Type="Real" Optional="false">The x look vector (default 0).</Parameter>
			<Parameter Name="lookat_y" Type="Real" Optional="false">The y look vector (default 0).</Parameter>
			<Parameter Name="lookat_z" Type="Real" Optional="false">The z look vector (default 1000).</Parameter>
			<Parameter Name="up_x" Type="Real" Optional="false">The x up vector (default 0).</Parameter>
			<Parameter Name="up_y" Type="Real" Optional="false">The y up vector (default 1).</Parameter>
			<Parameter Name="up_z" Type="Real" Optional="false">The z up vector (default 0).</Parameter>
		</Function>
		<Function Name="audio_listener_position" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can change the position of the listener within the 3D audio space. The example image below shows the default position for the listener in the audio space:</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x position of the listener (default 0).</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position of the listener (default 0).</Parameter>
			<Parameter Name="z" Type="Real" Optional="false">The z position of the listener (default 0).</Parameter>
		</Function>
		<Function Name="audio_listener_set_orientation" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can change the orientation of the given listener within the 3D audio space. The default listener index is 0, but you can use the function audio_get_listener_info() to get the different indices available for the target platform.</Description>
			<Parameter Name="index" Type="Real" Optional="false">The listener to set the orientation of.</Parameter>
			<Parameter Name="lookat_x" Type="Real" Optional="false">The x look vector (default 0).</Parameter>
			<Parameter Name="lookat_y" Type="Real" Optional="false">The y look vector (default 0).</Parameter>
			<Parameter Name="lookat_z" Type="Real" Optional="false">The z look vector (default -1).</Parameter>
			<Parameter Name="up_x" Type="Real" Optional="false">The x up vector (default 0).</Parameter>
			<Parameter Name="up_y" Type="Real" Optional="false">The y up vector (default 1).</Parameter>
			<Parameter Name="up_z" Type="Real" Optional="false">The z up vector (default 0).</Parameter>
		</Function>
		<Function Name="audio_listener_set_position" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can change the position of a given listener within the 3D audio space. The default listener index is 0, but you can use the function audio_get_listener_info() to get the different indices available for the target platform. The example image below shows the default position for the listener in the audio space:</Description>
			<Parameter Name="index" Type="Real" Optional="false">The listener to get the data for (default 0).</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position of the listener (default 0).</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position of the listener (default 0).</Parameter>
			<Parameter Name="z" Type="Real" Optional="false">The z position of the listener (default 0).</Parameter>
		</Function>
		<Function Name="audio_listener_set_velocity" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to give the given listener Doppler effects and simulate audio motion based on the vector that is resolved from the given relative x, y and z positions. The default listener index is 0, but you can use the function audio_get_listener_info() to get the different indices available for the target platform.</Description>
			<Parameter Name="index" Type="Real" Optional="false">The listener to get the data for (default 0).</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x velocity of the listener (default 0).</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y velocity of the listener (default 0).</Parameter>
			<Parameter Name="z" Type="Real" Optional="false">The z velocity of the listener (default 0).</Parameter>
		</Function>
		<Function Name="audio_listener_velocity" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to give the listener Doppler effects and simulate audio motion based on the vector that is resolved from the given relative x, y and z positions. If the listener itself is not ever going to move, or the movement is not a constant motion, you would normally not need to set these values, but, for example, if you are making a scrolling game where the player has a constant bottom to top movement and the enemies a constant top to bottom movement, you would set the listener and emitter velocities (for emitters you would use audio_emitter_velocity()) to the appropriate vectors to simulate the correct Doppler effect as they move past the player instance.</Description>
			<Parameter Name="vx" Type="Real" Optional="false">The x velocity component of the listener (default 0).</Parameter>
			<Parameter Name="vy" Type="Real" Optional="false">The y velocity component of the listener (default 0).</Parameter>
			<Parameter Name="vz" Type="Real" Optional="false">The z velocity component of the listener (default 0).</Parameter>
		</Function>
		<Function Name="audio_set_listener_mask" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>When using multiple listeners on a system, you can set the bit-mask for a sound and have it heard from the flagged listener only. However, you can also set the global mask using this function and all sounds played normally will be heard from the listeners flagged by this mask, without the need to set the mask for each sound individually.</Description>
			<Parameter Name="mask" Type="String" Optional="false">The bit-mask data to set for the listeners</Parameter>
		</Function>
		<Function Name="audio_create_sync_group" Deprecated="false" ReturnType="Id.AudioSyncGroup" Pure="true">
			<Description>Creates a sync group and returns a unique ID value for it which should then be used in all further audio function calls for this group. If you want the group to loop then pass in true, otherwise pass in false, but note that if you want them to loop, all the tracks added later need to be the same length. Note that when you create a sync group, you will need to free the memory and sounds associated with it when not in use using the audio_destroy_sync_group() function - for example, in the Room End or Destroy events.</Description>
			<Parameter Name="loop" Type="Bool" Optional="false">Whether the tracks in the group should loop (true) or not (false).</Parameter>
		</Function>
		<Function Name="audio_destroy_sync_group" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Audio sync groups need to be destroyed when not in use to free up the memory and sound resources associated with them using this function. It takes the group index as returned when the group was created using the function audio_create_sync_group(), and frees all resources used by the group.</Description>
			<Parameter Name="group_index" Type="Id.AudioSyncGroup" Optional="false">The group index to be destroyed.</Parameter>
		</Function>
		<Function Name="audio_pause_sync_group" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>his function will pause the given sync group if it is playing, with the group index being the value returned when you created the group using the function audio_create_sync_group(). This does not stop the sound, and calling audio_resume_sync_group(), will start it playing from the same position it was paused at again.</Description>
			<Parameter Name="group_index" Type="Id.AudioSyncGroup" Optional="false">The group index to pause.</Parameter>
		</Function>
		<Function Name="audio_play_in_sync_group" Deprecated="false" ReturnType="Id.Buffer" Pure="false">
			<Description>With this function you can assign a sound to a previously create sync group. The group index is the value returned when you created the group using the function audio_create_sync_group(), and the sound index is the index of any compressed sound (*.ogg or *.mp3) from the Asset Browser. This function only adds the sound to the group, but it does not play the sound, and will be a value &gt; -1 if it succeeds and -1 if it fails, where a successful value indicates the sounds order in the sync group (so 0 would be the first sound added, 1 would be the second, etc...).</Description>
			<Parameter Name="group_index" Type="Id.AudioSyncGroup" Optional="false">The group index to assign the sound to.</Parameter>
			<Parameter Name="sound_index" Type="Asset.GMSound" Optional="false">The sound index to be assigned to the group.</Parameter>
		</Function>
		<Function Name="audio_resume_sync_group" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will resume the given sync group if it is playing and has previously been paused (using the function audio_pause_sync_group). The group index is the value returned when you created the group using the function audio_create_sync_group().</Description>
			<Parameter Name="group_index" Type="Id.AudioSyncGroup" Optional="false">The group index to resume.</Parameter>
		</Function>
		<Function Name="audio_start_sync_group" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can start playing a previously created sync group. You need to supply the group index which is the value returned when you created the group using the function audio_create_sync_group().</Description>
			<Parameter Name="group_index" Type="Id.AudioSyncGroup" Optional="false">The group index to play.</Parameter>
		</Function>
		<Function Name="audio_stop_sync_group" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will stop the given sync group if it is playing, with the group index being the value returned when you created the group using the function audio_create_sync_group().</Description>
			<Parameter Name="group_index" Type="Id.AudioSyncGroup" Optional="false">The group index to stop playing.</Parameter>
		</Function>
		<Function Name="audio_sync_group_debug" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>his function can be used to display debug information about any given sync group (the group index is the value returned when the group was created using the function audio_create_sync_group()). You can call the function with a value of -1 to switch off the overlay.</Description>
			<Parameter Name="group_index" Type="Id.AudioSyncGroup" Optional="false">The group index to debug, or -1 to switch off the debugging.</Parameter>
		</Function>
		<Function Name="audio_sync_group_get_track_pos" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the current play position of the given sync group. The group index is the value returned when you created the group using the function audio_create_sync_group(), and the return value is the time in seconds that the tracks have been playing.</Description>
			<Parameter Name="group_index" Type="Id.AudioSyncGroup" Optional="false">The group index to get the position of.</Parameter>
		</Function>
		<Function Name="audio_sync_group_is_playing" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function can be used to check if any audio in a synchronised group is playing. You are required to supply the sync group ID as returned by the function audio_create_sync_group().</Description>
			<Parameter Name="group_index" Type="Id.AudioSyncGroup" Optional="false">The group index to check.</Parameter>
		</Function>
		<Function Name="audio_sync_group_is_paused" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function can be used to check if any audio in a synchronised group is paused. You are required to supply the sync group ID as returned by the function audio_create_sync_group().</Description>
			<Parameter Name="group_index" Type="Id.AudioSyncGroup" Optional="false">The group index to check.</Parameter>
		</Function>
		<Function Name="audio_bus_create" Deprecated="false" ReturnType="Struct.AudioBus" Pure="true">
			<Description>This function creates and returns a new audio bus struct, which can be modified to configure the bus' properties and to add audio effects to it.</Description>
		</Function>
		<Function Name="audio_effect_create" Deprecated="false" ReturnType="Struct.AudioEffect" Pure="true">
			<Description>This function creates and returns a new audio effect struct, which can be modified to configure the effect's properties.</Description>
			<Parameter Name="type" Type="Enum.AudioEffectType" Optional="false">The type of audio effect to create.</Parameter>
			<Parameter Name="params" Type="Struct" Optional="true">A struct containing any initial values for the effect's parameters.</Parameter>
		</Function>
		<Function Name="audio_emitter_bus" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function links an emitter to an audio bus. Any sounds played on this emitter will be processed by the audio bus.</Description>
			<Parameter Name="emitter" Type="Id.AudioEmitter" Optional="false">The emitter to link to the audio bus.</Parameter>
			<Parameter Name="bus" Type="Struct.AudioBus" Optional="false">The audio bus to link the emitter to.</Parameter>
		</Function>
		<Function Name="audio_emitter_get_bus" Deprecated="false" ReturnType="Struct.AudioBus" Pure="true">
			<Description>This function returns the audio bus that an emitter is linked to.</Description>
			<Parameter Name="emitter" Type="Id.AudioEmitter" Optional="false">The emitter whose audio bus should be returned.</Parameter>
		</Function>
		<Function Name="audio_bus_get_emitters" Deprecated="false" ReturnType="Array[Id.AudioEmitter]" Pure="true">
			<Description>This function returns an array of all of the audio emitters linked to a given audio bus.</Description>
			<Parameter Name="bus" Type="Struct.AudioBus" Optional="false">The audio bus whose emitters should be returned.</Parameter>
		</Function>
		<Function Name="audio_bus_clear_emitters" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function relinks all of the emitters linked to the given bus back to the main bus.</Description>
			<Parameter Name="bus" Type="Struct.AudioBus" Optional="false">The audio bus whose emitters should be cleared.</Parameter>
		</Function>
		<Function Name="lin_to_db" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Converts a linear gain to a gain in decibels (dB).</Description>
			<Parameter Name="x" Type="Real" Optional="false">The value to convert.</Parameter>
		</Function>
		<Function Name="db_to_lin" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Converts a gain in decibels (dB) to a linear gain.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The value to convert.</Parameter>
		</Function>
		<Function Name="font_add" Deprecated="false" ReturnType="Asset.GMFont" Pure="false">
			<Description>This function can be used to add a font to your game from a font file present in the Included Files. You can define the size of the font (in points), as well as whether the font should be bold or italic, and you can also define the range of characters to include. The function returns an index value that should be stored in a variable as this will be needed in all further code that refer to this font, or it will return -1 if the function fails for any reason.</Description>
			<Parameter Name="name" Type="String" Optional="false">The path of the font file in the Included Files (*.ttf or *.otf).</Parameter>
			<Parameter Name="size" Type="Real" Optional="false">The size of the font - points for Web Fonts, pixels for file fonts.</Parameter>
			<Parameter Name="bold" Type="Bool" Optional="false">Whether the font is bold (true) or not (false).</Parameter>
			<Parameter Name="italic" Type="Bool" Optional="false">Whether the font is italic (true) or not (false).</Parameter>
			<Parameter Name="first" Type="Real" Optional="false">The first character to include (if you&apos;re unsure, go for 32).</Parameter>
			<Parameter Name="last" Type="Real" Optional="false">The last character to include (if you&apos;re unsure, go for 128).</Parameter>
		</Function>
		<Function Name="font_add_enable_aa" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to enable or disable anti-aliasing (AA) for fonts added using font_add(). This function needs to be called before you add any fonts and setting it to true will enable AA, and setting it to false will disable it. By default AA is enabled. Note that this will have no effect on fonts that have been added before the function was called, and the function only needs to be called once when the font is added, and not every draw/step that the font is being used.</Description>
			<Parameter Name="enable" Type="Bool" Optional="false">Whether to enable (true) or disable (false) AA for added fonts.</Parameter>
		</Function>
		<Function Name="font_add_get_enable_aa" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>This function can be used to check whether anti-aliasing (AA) is enabled for fonts added using font_add(). The function will return true if AA is enabled, and false if it is not. Note that AA is enabled by default, but you can change the AA state for added fonts using the function font_add_enable_aa(), as long as it is called before adding the font.</Description>
		</Function>
		<Function Name="font_add_sprite" Deprecated="false" ReturnType="Asset.GMFont" Pure="false">
			<Description>With this function you can use a &quot;sprite strip&quot; to create a new font asset, where each sub-image would be an individual symbol or letter. The index is the UTF8 map number for the first character to use and the ranges to use are the same as you would for a normal font, starting with &quot;!&quot; but remember that you should only include what you need and that you should be using the ord() function to get the correct UTF8 value for the starting letter. The created sprite font will then have the sub-images set to an individual glyph from the font, where the &quot;first&quot; glyph will have the image_index of 0. You can define &quot;space&quot; as being any character you want, for example a single line the size that you want the space to be, and all spaces in text will be rendered at that width (but the image chosen will never be rendered), or if you don&apos;t supply a sprite for space then the width of the widest character in the sprite font will be used instead.</Description>
			<Parameter Name="spr" Type="Asset.GMSprite" Optional="false">The sprite to add a font based on.</Parameter>
			<Parameter Name="first" Type="Real" Optional="false">The index of the first available character.</Parameter>
			<Parameter Name="prop" Type="Bool" Optional="false">Set as proportional font or not.</Parameter>
			<Parameter Name="sep" Type="Real" Optional="false">The space to leave between each letter.</Parameter>
		</Function>
		<Function Name="font_add_sprite_ext" Deprecated="false" ReturnType="Asset.GMFont" Pure="false">
			<Description>With this function you can use a &quot;sprite strip&quot; (the sprite itself must be a sprite asset from the Asset Browser, or a sprite you have added to the game resources using sprite_add) to create a new font asset, where each sub-image would be an individual symbol or letter. Unlike the normal font_add_sprite() which has a specific order for the sub-images of the sprite, this function will map the sprite sub-images based on the argument &quot;string_map&quot; of the function. This argument is a string that you can use to tell GameMaker what order the sub-images of the sprite font are and it will map these automatically when writing text. So, for example, if you have a string-map of &quot;AaBbCcDdEeFfGgHh&quot;, your sprite font must have the sub-images ordered in this way. You can define &quot;space&quot; as being any character you want, for example a single line the size that you want the space to be, and all spaces in text will be rendered at that width (but the image chosen will never be rendered), or if you don&apos;t supply a sprite for space then the width of the widest character in the sprite font will be used instead.</Description>
			<Parameter Name="spr" Type="Asset.GMSprite" Optional="false">The sprite to add a font based on.</Parameter>
			<Parameter Name="string_map" Type="String" Optional="false">String from which sprite sub-image order is taken.</Parameter>
			<Parameter Name="prop" Type="Bool" Optional="false">Set as proportional font or not.</Parameter>
			<Parameter Name="sep" Type="Real" Optional="false">The space to leave between each letter.</Parameter>
		</Function>
		<Function Name="font_delete" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can delete a font asset from the game. This is a permanent removal, and changing rooms, or restarting the game will not bring the removed font back. For that the player would need to exit the game and restart that way, so take care when using this function. In general it is only needed for freeing up memory that has been used by a font added to the game through the functions font_add() or font_add_sprite().</Description>
			<Parameter Name="ind" Type="Asset.GMFont" Optional="false">The index of the font to delete.</Parameter>
		</Function>
		<Function Name="font_enable_sdf" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can enable or disable SDF rendering for the specified font. This only works on fonts added using font_add().</Description>
			<Parameter Name="ind" Type="Asset.GMFont" Optional="false">The index of the font.</Parameter>
			<Parameter Name="enable" Type="Bool" Optional="false">Whether to enable (true) or disable (false) SDF rendering for the specified font.</Parameter>
		</Function>
		<Function Name="font_get_sdf_enabled" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can determine whether SDF rendering is enabled or disabled for the specified font</Description>
			<Parameter Name="ind" Type="Asset.GMFont" Optional="false">The index of the font.</Parameter>			
		</Function>
		<Function Name="font_sdf_spread" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the SDF spread value for the specified font. This only works on fonts added using font_add(), and its effect is only visible if the font is using SDF rendering.</Description>
			<Parameter Name="ind" Type="Asset.GMFont" Optional="false">The index of the font.</Parameter>
			<Parameter Name="spread" Type="Real" Optional="false">The SDF spread value to set for the specified font.</Parameter>
		</Function>
		<Function Name="font_get_sdf_spread" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can query the SDF spread value for the specified font</Description>
			<Parameter Name="ind" Type="Asset.GMFont" Optional="false">The index of the font.</Parameter>			
		</Function>
		<Function Name="font_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function returns whether a font with the specified index exists or not. You can check font indices as defined from the Asset Browser, or fonts that have been added using functions like font_add().</Description>
			<Parameter Name="ind" Type="Asset.GMFont" Optional="false">Index of the font to check.</Parameter>
		</Function>
		<Function Name="font_get_bold" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check any font asset to see if it has the bold flag or not. If it does the function will return true, otherwise it will return false.</Description>
			<Parameter Name="ind" Type="Asset.GMFont" Optional="false">Index of the font to check.</Parameter>
		</Function>
		<Function Name="font_get_fontname" Deprecated="false" ReturnType="String" Pure="true">
			<Description>With this function you can get the actual system name of the selected font asset. This function returns a string and not an index, and the name returned will depend on the font being used. For example, you may have a font asset called &quot;fnt_Main&quot; in the GameMaker Asset Browser, and the font itself may be the Windows system font Arial. In this case the function will return &quot;Arial&quot; as that is the system name of the font. Should you need the name as it appears in the Asset Browser, you should use font_get_name().</Description>
			<Parameter Name="ind" Type="Asset.GMFont" Optional="false">Index of the font to check.</Parameter>
		</Function>
		<Function Name="font_get_info" Deprecated="false" ReturnType="Struct.FontInfo" Pure="true">
			<Description>This function is used to retrieve information for the given font. You supply a font index (which can be an asset added through the Asset Browser or a font added at runtime) and the function returns a struct with the following variables:</Description>
			<Parameter Name="font" Type="Asset.GMFont" Optional="false">The font for which information should be retrieved.</Parameter>
		</Function>
		<Function Name="font_get_italic" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check any font asset to see if it has the italic flag or not. If it does the function will return true, otherwise it will return false.</Description>
			<Parameter Name="ind" Type="Asset.GMFont" Optional="false">Index of the font to check.</Parameter>
		</Function>
		<Function Name="font_get_last" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>When defining a font in GameMaker, you can define a range of characters to include. This is because the font itself is not actually included with your game (for legal reasons) but an image of the font is included on a texture page and that is what your game will use (just like any other graphics asset). This means that you will want to keep the number of characters that you use to a minimum and specify only the range of characters that your game will need so as to keep texture memory as optimised as possible. This function can be used to find the last character (as an UTF8 value) that was used when your font asset was added to your game.</Description>
			<Parameter Name="ind" Type="Asset.GMFont" Optional="false">Index of the font to check.</Parameter>
		</Function>
		<Function Name="font_get_name" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function can be used to get the name (as a string) that was given to the font when it was added as an asset to the GameMaker Asset Browser. Please note that this is only a string and cannot be used to reference the font directly - for that you would need the font index. You can, however, use this string to get the font index using the returned string along with the function asset_get_index().</Description>
			<Parameter Name="ind" Type="Asset.GMFont" Optional="false">Index of the font to check.</Parameter>
		</Function>
		<Function Name="font_get_size" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the size of any font resource, which is the point value shown by the font resource dialogue.</Description>
			<Parameter Name="ind" Type="Asset.GMFont" Optional="false">Index of the font to get the size of.</Parameter>
		</Function>
		<Function Name="font_get_texture" Deprecated="false" ReturnType="Pointer.Texture" Pure="true">
			<Description>This function returns a special pointer for the font texture page. This value can then be used in other draw functions, particularly in general drawing when using primitives as well as the Shader functions. You can get more information about the returned texture page using the different texture_ functions found here.</Description>
			<Parameter Name="font" Type="Asset.GMFont" Optional="false">The index of the font to use.</Parameter>
		</Function>
		<Function Name="font_get_uvs" Deprecated="false" ReturnType="Array[Real]" Pure="true">
			<Description>This function returns an array with the UV coordinates for the font texture on the texture page, filling in the array with the following values:</Description>
			<Parameter Name="font" Type="Asset.GMFont" Optional="false">The index of the font to use.</Parameter>
		</Function>
		<Function Name="font_replace_sprite" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can use a &quot;sprite strip&quot; to replace a previously created sprite font asset, where each sub-image would be an individual symbol or letter. The index is the UTF8 map number for the first character to use and the ranges to use are the same as you would for a normal font, starting with &quot;!&quot; but remember that you should only include what you need and that you should be using the ord() function to get the correct UTF8 value for the starting letter.</Description>
			<Parameter Name="ind" Type="Asset.GMFont" Optional="false">The index of the font that shall be replaced (ie all references to this resource past this function will refer to the new font, not the original).</Parameter>
			<Parameter Name="spr" Type="Asset.GMSprite" Optional="false">The sprite to add a font based on.</Parameter>
			<Parameter Name="first" Type="Real" Optional="false">The index of the first available character.</Parameter>
			<Parameter Name="prop" Type="Bool" Optional="false">Whether white space around each letter should be removed (if false, the created font will be monospaced, otherwise it&apos;ll be like most regular fonts).</Parameter>
			<Parameter Name="sep" Type="Real" Optional="false">The space between each letter, 0 meaning the right of one letter just touches the left of the next one.</Parameter>
		</Function>
		<Function Name="font_replace_sprite_ext" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will replace a sprite font that you created previously using the function font_add_sprite_ext(). It uses a &quot;sprite strip&quot;, where each sub-image is be an individual symbol or letter, and the images are mapped to letters based on the argument &quot;string_map&quot; of the function. This argument is a string that you can use to tell GameMaker what order the sub-images of the sprite font are and it will map these automatically when writing text. So, for example, if you have a string-map of &quot;AaBbCcDdEeFfGgHh&quot;, your sprite font must have the sub-images ordered in this way.</Description>
			<Parameter Name="font" Type="Asset.GMFont" Optional="false">The font to replace.</Parameter>
			<Parameter Name="spr" Type="Asset.GMSprite" Optional="false">The sprite to add a font based on.</Parameter>
			<Parameter Name="string_map" Type="String" Optional="false">String from which sprite sub-image order is taken.</Parameter>
			<Parameter Name="prop" Type="Bool" Optional="false">Set as proportional font or not.</Parameter>
			<Parameter Name="sep" Type="Real" Optional="false">The space to leave between each letter.</Parameter>
		</Function>
		<Function Name="font_set_cache_size" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>When performing image blending and colouring, HTML5 cannot do it dynamically in the same way an executable could be performed. Therefore GameMaker has to temporarily save a blended copy of the images and load them in when needed. This function sets how many blended copies of the given font can be cached before old ones are overwritten. The default value is 4.</Description>
			<Parameter Name="ind" Type="Asset.GMFont" Optional="false">The index of the font to change the cache size of.</Parameter>
			<Parameter Name="max" Type="Real" Optional="false">The maximum number of cached copies of the font that can be stored.</Parameter>
		</Function>
		<Function Name="alarm_get" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to get the current value of the given alarm. You supply the alarm number from 0 to 11 and this function will return the value that the alarm is currently on. This is an alternative method to getting the alarm array value directly.</Description>
			<Parameter Name="index" Type="Real" Optional="false">The alarm index to get, from 0 to 11.</Parameter>
		</Function>
		<Function Name="alarm_set" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set an alarm. You supply the alarm number from 0 to 11, and then the value to set the alarm to. The value must be an integer value, and you can set it to -1 to stop the alarm (non integer values will be rounded to the nearest integer). This is an alternative method to setting the alarm array directly.</Description>
			<Parameter Name="index" Type="Real" Optional="false">The alarm index to set, from 0 to 11.</Parameter>
			<Parameter Name="value" Type="Real" Optional="false">The value (an integer) to set the alarm to.</Parameter>
		</Function>
		<Function Name="instance_change" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>You can use this function to change one instance of an object into another instance of a different object, and while doing so decide whether to perform the initial instances Destroy and Clean Up Events and the new instances Create Event. In this way, you can have (for example) a bomb change into an explosion - in which case the &quot;perf&quot; argument would probably be true as you would want the bomb to perform its Destroy Event and Clean Up Event, as well as the explosion to perform its Create Event - or you could have your player character change into a different one - in which case the &quot;perf&quot; argument would probably be false as you do not want the instances to perform their Create and Destroy/Clean Up events.</Description>
			<Parameter Name="obj" Type="Asset.GMObject" Optional="false">The new object the calling object will change into.</Parameter>
			<Parameter Name="perf" Type="Bool" Optional="false">Whether to perform that new object&apos;s create and destroy events (true) or not (false).</Parameter>
		</Function>
		<Function Name="instance_copy" Deprecated="false" ReturnType="Id.Instance" Pure="true">
			<Description>With this function you can &quot;clone&quot; an instance as this will create a new version of the instance running the code at its same position. The &quot;perf&quot; argument is used to instruct this new instance to perform the create event or not. This function returns the id of the new instance which can then be stored in a variable or used to access that instance.</Description>
			<Parameter Name="perf" Type="Bool" Optional="false">Whether to perform the new instance&apos;s Create event (true) or not (false).</Parameter>
		</Function>
		<Function Name="instance_create_depth" Deprecated="false" ReturnType="Id.Instance" Pure="false">
			<Description>With this function you can create a new instance of the specified object at any given point within the room and at the depth specified. The depth can be any value, where the lower the depth the &quot;nearer&quot; to the camera things will be drawn and the higher the depth the further away, so an instance at depth -200 will be drawn over an instance at depth +300 (for example).</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x position the object will be created at</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position the object will be created at</Parameter>
			<Parameter Name="depth" Type="Real" Optional="false">The depth to assign the created instance to</Parameter>
			<Parameter Name="obj" Type="Asset.GMObject" Optional="false">The object index of the object to create an instance of</Parameter>
			<Parameter Name="var_struct" Type="Struct" Optional="true">A structure that contains variables that are copied into the new instance before the Create Event is called</Parameter>
		</Function>
		<Function Name="instance_create_layer" Deprecated="false" ReturnType="Id.Instance" Pure="false">
			<Description>With this function you can create a new instance of the specified object at any given point within the room and on the layer specified. The layer can be identified using the layer ID value (as returned by the function layer_create()) or by the name of the layer (as a string, for example &quot;instance_layer&quot;) as defined in the room editor.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x position the object will be created at</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position the object will be created at</Parameter>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The layer ID (or name) to assign the created instance to</Parameter>
			<Parameter Name="obj" Type="Asset.GMObject" Optional="false">The object index of the object to create an instance of</Parameter>
			<Parameter Name="var_struct" Type="Struct" Optional="true">A structure that contains variables that are copied into the new instance before the Create Event is called</Parameter>
		</Function>
		<Function Name="instance_destroy" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>You call this function whenever you wish to destroy an instance, normally triggering a Destroy Event and also a Clean Up Event. This will remove it from the room until the room is restarted (unless the room is persistent). Calling the function with no arguments will simply destroy the instance that is currently in scope and running the code, but you can provide an optional &quot;id&quot; argument and target a specific instance by using the instance id value, or you can target all instances of a particular object by using an object_index. For example:</Description>
			<Parameter Name="id" Type="Asset.GMObject,Id.Instance" Optional="true">The instance ID or object_index to destroy (optional, default is the calling instance)</Parameter>
			<Parameter Name="execute_event_flag" Type="Bool" Optional="true">Set to true or false to perform the destroy event or not (optional, default is true)</Parameter>
		</Function>
		<Function Name="instance_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function can be used in two ways depending on what you wish to check. You can give it an object_index to check for, in which case this function will return true if any active instances of the specified object exist in the current room, or you can also supply it with an instance id, in which case this function will return true if that specific instance exists and is active in the current room.</Description>
			<Parameter Name="obj" Type="Id.Instance,Asset.GMObject,Undefined" Optional="false">The object or instance to check for the existence of.</Parameter>
		</Function>
		<Function Name="instance_find" Deprecated="false" ReturnType="Id.Instance" Pure="true">
			<Description>All instances have a unique identifier (id) which can be used to modify and manipulate them while a game is running, but you may not always know what the id for a specific instance is and so this function can help as you can use it to iterate through all of them to find what you need. You specify the object that you want to find the instance of and a number, and if there is an instance at that position in the instance list then the function returns the id of that instance, and if not it returns the special keyword noone. You can also use the keyword all to iterate through all the instances in a room, as well as a parent object to iterate through all the instances that are part of that parent / child hierarchy, and you can even specify an instance (if you have its id) as a check to see if it actually exists in the current room. Please note that as instances are sorted in an arbitrary manner, there is no specific order to how the instances are checked by this function, and any instance can be in any position.</Description>
			<Parameter Name="obj" Type="Asset.GMObject,Constant.All" Optional="false">The object to find the nth instance of</Parameter>
			<Parameter Name="n" Type="Real" Optional="false">The number of the instance to find.</Parameter>
		</Function>
		<Function Name="instance_furthest" Deprecated="false" ReturnType="Id.Instance" Pure="true">
			<Description>This function will check all the instances of the given object to see which is furthest from the given x/y point. All checks will be from the given x/y position to the origin (the x/y position) of instances of the object specified. If no instances of the object exist, the function will return the keyword noone, but if there are instances then it will return the id of the instance found. Please note that if the instance running the code has the same object index as the object being checked, then it will be included in the check (this includes checks for parent objects if the calling instance is also a child of the parent).</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x position to check for instances far from.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position to check for instances far from.</Parameter>
			<Parameter Name="obj" Type="Asset.GMObject,Constant.All" Optional="false">The object to check for instances of.</Parameter>
		</Function>
		<Function Name="instance_id_get" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the unique ID value of any instance from the currently active instance list. You give the index in the instance list to get the ID from and the function will return the value for storing in a variable.</Description>
			<Parameter Name="index" Type="Id.Instance" Optional="false">The index within the instance list from 0 - (instance count - 1).</Parameter>
		</Function>
		<Function Name="instance_nearest" Deprecated="false" ReturnType="Id.Instance" Pure="true">
			<Description>This function will check all the instances of the given object to see which is nearest to the given x/y point. All checks will be from the given x/y position to the origin (the x/y position) of instances of the object specified. If no instances of the object exist, the function will return the keyword noone, but if there are instances then it will return the id of the instance found. Please note that if the instance running the code has the same object index as the object being checked, then it will be included in the check (this includes checks for parent objects if the calling instance is also a child of the parent).</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x position to check from.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position to check from.</Parameter>
			<Parameter Name="obj" Type="Asset.GMObject,Constant.All" Optional="false">The object to check for instances of.</Parameter>
		</Function>
		<Function Name="instance_number" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can find out how many active instances of the specified object exists in the room. When checking using this function, if the object is a parent, then all child objects will also be included in the return value, and also note that those instances which have been deactivated with the instance deactivate functions will not be included in this check.</Description>
			<Parameter Name="obj" Type="Asset.GMObject,Constant.All" Optional="false">The object to total the number of instances of.</Parameter>
		</Function>
		<Function Name="instance_place" Deprecated="false" ReturnType="Id.Instance" Pure="true">
			<Description>With this function you can check a position for a collision with another instance or all instances of an object using the collision mask of the instance that runs the code for the check. When you use this you are effectively asking GameMaker to move the instance to the new position, check for a collision, move back and tell you if a collision was found or not. This will work for precise collisions, but only if both the instance and the object being checked for have precise collision masks selected otherwise only bounding box collisions are applied. this function will return the unique instance id of the object being collided, but if that is not needed it is slightly faster to use the function place_meeting(). This function also accepts the special keywords all and other and will return the keyword noone if no collision occurs, or the unique instance ID value of the instance found if a collision does occur.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x position to check for instances.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position to check for instances.</Parameter>
			<Parameter Name="obj" Type="Asset.GMObject,Constant.All" Optional="false">The object to check for instances of.</Parameter>
		</Function>
		<Function Name="instance_place_list" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can check a position for a collision with all instances of an object using the collision mask of the instance that runs the code for the check. When you use this you are effectively asking GameMaker to move the instance to the new position, check for a collision, then move back and tell you if a collision was found or not. This will work for precise collisions, but only if both the instance and the instances of the object being checked for have precise collision masks selected, otherwise only bounding box collisions are applied. The function will populate a (previously created) DS list with the unique id values of all instances of the object that are considered to be in collision with the calling instance, and you have the option to order the list based on the distance from the origin of the instance doing the checking to the origin of the instances found to be in collision. Note that the function also accepts the special keyword all, in which case all instances found to be in collision will be listed. The function returns the number of instances found, or 0 if none are found.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x position to check for instances.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position to check for instances.</Parameter>
			<Parameter Name="obj" Type="Asset.GMObject,Constant.All" Optional="false">The object to check for instances of.</Parameter>
			<Parameter Name="list" Type="Id.DsList" Optional="false">The DS list to use to store the IDs of colliding instances.</Parameter>
			<Parameter Name="ordered" Type="Bool" Optional="false">Whether the list should be ordered by distance (true) or not (false).</Parameter>
		</Function>
		<Function Name="instance_position" Deprecated="false" ReturnType="Id.Instance" Pure="true">
			<Description>With this function you can check a position for a collision with another instance or all instances of an object. When you use this you are checking a single point in the room for an instance or an object. This check will be done against the bounding box of the instance or against the mask of the instance if that instance has precise collisions checked and will return the unique instance id. If you do not need the id of the colliding instance you should consider using position_meeting() instead. This function also accepts the special keywords all and other and will return the keyword noone if no collision occurs or the unique ID value of the instance found if a collision does occur.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x position to check for instances.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position to check for instances.</Parameter>
			<Parameter Name="obj" Type="Asset.GMObject,Constant.All" Optional="false">The object to check for instances of.</Parameter>
		</Function>
		<Function Name="instance_position_list" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can check a position for a collision with all instances of another object. When you use this you are checking a single point in the room for all instances of an object, and the check will be done against the bounding box of the instances or against the mask of the instances if that object has precise collisions checked.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x position to check for instances.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position to check for instances.</Parameter>
			<Parameter Name="obj" Type="Asset.GMObject,Constant.All" Optional="false">The object to check for instances of.</Parameter>
			<Parameter Name="list" Type="Id.DsList" Optional="false">The DS list to use to store the IDs of colliding instances.</Parameter>
			<Parameter Name="ordered" Type="Bool" Optional="false">Whether the list should be ordered by distance (true) or not (false).</Parameter>
		</Function>
		<Function Name="instance_activate_all" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can tell GameMaker to activate all instances that have been previously deactivated in a room. Note that activation is not instantaneous, and an instance that has been activated in this way will not be considered to be active until the end of the event in which the function was called.</Description>
		</Function>
		<Function Name="instance_activate_layer" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can activate a layer that has been deactivated previously. You need to supply the layer ID, which can either be the name of the layer as written in the code editor (as a string) or the actual layer ID value as returned by the layer_create() and all deactivated instances on that layer will activated once again. Note that if you have deactivated a layer that has persistent instances, you will need to reactivate the layer again with this function before changing room, otherwise any persistent instances will not be carried over and will be discarded. Note too that activation is not instantaneous, and an instance that has been activated in this way will not be considered to be active until the end of the event in which the function was called.</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The layer ID string (or value) to be used</Parameter>
		</Function>
		<Function Name="instance_activate_object" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can activate a single instance or all instances of a specific object from all those that have been deactivated previously. Note that if you have deactivated an instance or object that has been flagged as Persistent, then you will need to reactivate it again with this function before changing room, otherwise it will not be carried over and will be discarded instead. Note too that activation is not instantaneous, and an instance that has been activated in this way will not be considered to be active until the end of the event in which the function was called.</Description>
			<Parameter Name="obj" Type="Asset.GMObject,Id.Instance,Constant.All" Optional="false">The object or instance to activate (the keyword all can also be used).</Parameter>
		</Function>
		<Function Name="instance_activate_region" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can define a region within the room to activate instances that have previously been deactivated. This region can either be flagged as &quot;inside&quot; or &quot;outside&quot; as demonstrated in the following image:</Description>
			<Parameter Name="left" Type="Real" Optional="false">The x coordinate of the left of the rectangular region to activate.</Parameter>
			<Parameter Name="top" Type="Real" Optional="false">The y coordinate of the top of the rectangular region to activate.</Parameter>
			<Parameter Name="width" Type="Real" Optional="false">The width of the region to activate.</Parameter>
			<Parameter Name="height" Type="Real" Optional="false">The height of the region to activate.</Parameter>
			<Parameter Name="inside" Type="Bool" Optional="false">Whether to activate instances on the inside of the region (true) or the outside (false).</Parameter>
		</Function>
		<Function Name="instance_deactivate_all" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will deactivate all instances that are in the room at the moment that the code is run. This may include the instance running the code if the &quot;notme&quot; flag is set to false, but normally you would want that instance to be active, in which case the &quot;notme&quot; flag should be set to true. Note that deactivation is not instantaneous, and an instance that has been deactivated in this way will not be considered to be inactive until the end of the event in which the function was called.</Description>
			<Parameter Name="notme" Type="Bool" Optional="false">Whether to keep the calling instance activated (true) or not (false).</Parameter>
		</Function>
		<Function Name="instance_deactivate_layer" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can deactivate all instances assigned to a specific layer. You need to supply the layer ID, which can either be the name of the layer as written in the code editor (as a string) or the actual layer ID value as returned by the layer_create(), and note that you can only deactivate instance layers with this function. Note that if you have deactivated a layer that has instances of objects flagged as Persistent, then you will need to reactivate the layer again with the function instance_activate_layer() before changing room, otherwise any persistent instances on the layer will not be carried over and will be discarded. Note too that deactivation is not instantaneous, and an instance that has been deactivated in this way will not be considered to be inactive until the end of the event in which the function was called.</Description>
			<Parameter Name="layer" Type="Id.Layer,String" Optional="false">The layer ID string (or value) to be used</Parameter>
		</Function>
		<Function Name="instance_deactivate_object" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can deactivate a single instance or all instances of a specific object from all those that have been activated previously. Note that if you have deactivated an instance or object that has been flagged as Persistent, then you will need to reactivate it again with the function instance_activate_object() before changing room, otherwise it will not be carried over and will be discarded instead. Note too that deactivation is not instantaneous, and an instance that has been deactivated in this way will not be considered to be inactive until the end of the event in which the function was called.</Description>
			<Parameter Name="obj" Type="Asset.GMObject,Id.Instance,Constant.All" Optional="false">The object or instance to deactivate (the keyword all can also be used).</Parameter>
		</Function>
		<Function Name="instance_deactivate_region" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can define a region within the room to deactivate instances that have previously been activated. This region can either be flagged as &quot;inside&quot; or &quot;outside&quot; as demonstrated in the following image:</Description>
			<Parameter Name="left" Type="Real" Optional="false">The x coordinate of the left of the rectangular region to deactivate.</Parameter>
			<Parameter Name="top" Type="Real" Optional="false">The y coordinate of the top of the rectangular region to deactivate.</Parameter>
			<Parameter Name="width" Type="Real" Optional="false">The width of the region to deactivate.</Parameter>
			<Parameter Name="height" Type="Real" Optional="false">The height of the region to deactivate.</Parameter>
			<Parameter Name="inside" Type="Bool" Optional="false">Whether to deactivate instances on the inside of the region (true) or the outside (false).</Parameter>
			<Parameter Name="notme" Type="Bool" Optional="false">Whether to exclude the calling instance from deactivation (true) or not (false).</Parameter>
		</Function>
		<Function Name="object_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function returns whether an object with the specified index exists or not. Note that this checks to see if an object is present in the Asset Browser, and not actually in the game room. For that you should use the function instance_exists().</Description>
			<Parameter Name="obj" Type="Asset.GMObject" Optional="false">The index of the object to check.</Parameter>
		</Function>
		<Function Name="object_get_mask" Deprecated="false" ReturnType="Asset.GMSprite" Pure="true">
			<Description>This function will tell you whether the object you are checking has a mask index or not, and if it does then it will return the index of that mask, or -1 if it does not. Please note that this is not an instance function! You can have an object with no mask while an instance of that same object can have one and vice-versa, or they can even have different masks. You can set an individual instances mask index using the mask_index instance variable.</Description>
			<Parameter Name="obj" Type="Asset.GMObject" Optional="false">The index of the object to check</Parameter>
		</Function>
		<Function Name="object_get_name" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function will return the name as a string of the specified object. This name is the one that has been specified for the object in the Asset Browser of the main GameMaker window. Please note that this is only a string and cannot be used to reference the object directly - for that you would need the object index. You can, however, use this string to get the object index using the returned string along with the function asset_get_index().</Description>
			<Parameter Name="obj" Type="Asset.GMObject" Optional="false">The index of the object to check.</Parameter>
		</Function>
		<Function Name="object_get_parent" Deprecated="false" ReturnType="Asset.GMObject" Pure="true">
			<Description>This function will get you the object_index of any parent that has been assigned to the specified object, or else return -100 to show that the object has no parent assigned to it, or -1 if the object being checked does not exist. For more information on parents see the section on the Object Editor.</Description>
			<Parameter Name="obj" Type="Asset.GMObject" Optional="false">The index of the object to check</Parameter>
		</Function>
		<Function Name="object_get_persistent" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will tell you whether the object you are checking has been flagged as &quot;persistent&quot; or not. A persistent object is one that will cause any instances of it to be carried through from room to room unless they are explicitly destroyed. Please note that this is not an instance function! So, you can have a persistent object and a non-persistent instance of the same object and vice-versa. You can set an individual instances persistent flag using the persistent instance variable.</Description>
			<Parameter Name="obj" Type="Asset.GMObject" Optional="false">The index of the object to check.</Parameter>
		</Function>
		<Function Name="object_get_physics" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will tell you whether the object you are checking has been flagged as &quot;physics enabled&quot;  - in which case it&apos;ll return true, - or not - in which case it will return false.</Description>
			<Parameter Name="obj" Type="Asset.GMObject" Optional="false">The index of the object to check.</Parameter>
		</Function>
		<Function Name="object_get_solid" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will tell you whether the object you are checking has been flagged as &quot;solid&quot; or not. A solid object generates a special collision event when using the traditional collision system (ie: the physics world is off). Please note that this is not an instance function! So, you can have a solid object and a normal instance of the same object and vice-versa. You can set an individual instances solid flag using the solid instance variable.</Description>
			<Parameter Name="obj" Type="Asset.GMObject" Optional="false">The index of the object to check.</Parameter>
		</Function>
		<Function Name="object_get_sprite" Deprecated="false" ReturnType="Asset.GMSprite" Pure="true">
			<Description>This function will tell you whether the object you are checking has a sprite or not, and if it does then it will return the index of that sprite, or -1 if it does not. Please note that this is not an instance function! You can have an object with no sprite while an instance of that same object can have one and vice-versa, or they can even have different sprites. You can set an individual instances sprite using the sprite_index instance variable.</Description>
			<Parameter Name="obj" Type="Asset.GMObject" Optional="false">The index of the object to check</Parameter>
		</Function>
		<Function Name="object_get_visible" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will tell you whether the object you are checking has been flagged as &quot;visible&quot; (runs its draw event) or not (does not run its draw event). Please note that this is not an instance function! So, you can have a visible object and an invisible instance of the same object and vice-versa. You can set an individual instances visibility using the visible instance variable.</Description>
			<Parameter Name="obj" Type="Asset.GMObject" Optional="false">The index of the object to check.</Parameter>
		</Function>
		<Function Name="object_is_ancestor" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function can be used to check an object and see if it is an ancestor or not of another object. So, both arguments need to be object indices and not the instance ids, and the first one is always the object that you want to find out if it is a child of the second argument, which is always the object that want to check as the ancestor (parent).</Description>
			<Parameter Name="obj" Type="Asset.GMObject" Optional="false">The object that is being checked as the child.</Parameter>
			<Parameter Name="par" Type="Asset.GMObject" Optional="false">The object that is being checked as the ancestor (parent).</Parameter>
		</Function>
		<Function Name="object_set_mask" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the mask_index of a specific object (for more information on masks see The Object Editor). This means that all instances of this object that are created after the mask has been changed will be created with this new mask, while instances that are already in the room may not be affected. You can set this to -1 to remove a mask sprite and so default to the mask defined for the sprite of the object (or no masks if no sprite has been chosen).</Description>
			<Parameter Name="index" Type="Asset.GMObject" Optional="false">The index of the object to change.</Parameter>
			<Parameter Name="spr" Type="Asset.GMSprite" Optional="false">The new sprite to use as the object&apos;s mask.</Parameter>
		</Function>
		<Function Name="object_set_persistent" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the persistence of a specific object. A persistent object is &quot;carried over&quot; from room to room and maintains its properties at all times (for more information on persistence see the section on the Object Editor). Setting the persistence of the object means that all instances of this object that are created after the persistence has been changed will be created persistent, while instances that are already in the room may not be affected.</Description>
			<Parameter Name="index" Type="Asset.GMObject" Optional="false">The index of the object to change.</Parameter>
			<Parameter Name="pers" Type="Bool" Optional="false">Whether the object should be flagged as persistent (true) or not (false).</Parameter>
		</Function>
		<Function Name="object_set_solid" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can flag a specific object as being solid or not (for more information on the &quot;solid&quot; flag see the section on the Object Editor). This means that all instances of this object that are created after solid has been changed will be created with this new state, while instances that are already in the room may not be affected.</Description>
			<Parameter Name="index" Type="Asset.GMObject" Optional="false">The index of the object to change.</Parameter>
			<Parameter Name="solid" Type="Bool" Optional="false">The new solidity of the object (true=solid, false=not solid).</Parameter>
		</Function>
		<Function Name="object_set_sprite" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the sprite index of a specific object. This means that all instances of this object that are created after the sprite_index has been changed will be created with this new sprite_index, while instances that are already in the room may not be affected.</Description>
			<Parameter Name="index" Type="Asset.GMObject" Optional="false">The index of the object to change.</Parameter>
			<Parameter Name="spr" Type="Asset.GMSprite" Optional="false">The sprite to assign to the object.</Parameter>
		</Function>
		<Function Name="object_set_visible" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can flag a specific object as being visible or not (for more information on the &quot;visible&quot; flag see the section on the Object Editor). This means that all instances of this object that are created after visible has been changed will be created with this new state, while instances that are already in the room may not be affected.</Description>
			<Parameter Name="index" Type="Asset.GMObject" Optional="false">The index of the object to change.</Parameter>
			<Parameter Name="vis" Type="Bool" Optional="false">The new visibility of the object (true=visible, false=invisible).</Parameter>
		</Function>
		<Function Name="event_inherited" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will call the current event of the parent object of the instance. Normally, when an instance has a parent object, it automatically inherits all the same events as the parent, but if (for example) your parent object has a create event and you add one to your child object, all instances of the child object will run the new create event that you have added and not that which is in the parent object. Should you need to use both the parent object event and the child object event of the same type, you should use this function as it will run the parent object event before continuing with the rest of the code or actions that the child event contains.</Description>
		</Function>
		<Function Name="event_perform" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will perform the specified event, with the designated argument, for the instance running the code. There are many options here which allow complete simulation of all possible events, but note that this literally just performs all the code in the event and the game will not modify anything to make it trigger itself manually, for example if you choose to perform a keyboard press event, the event will be triggered but relevant key will not be recognised as having been pressed. Or if you perform an alarm event, the alarm counter will not be set to -1 but rather continue to count down.</Description>
			<Parameter Name="type" Type="Constant.EventType" Optional="false">The type of event to perform (see the table above).</Parameter>
			<Parameter Name="numb" Type="Constant.EventNumber,Real,Constant.VirtualKey" Optional="false">The specific event constant or value, if one is necessary (otherwise, just use 0).</Parameter>
		</Function>
		<Function Name="event_perform_async" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function is used to perform any one of the Asynchronous Events provided in GameMaker. You supply the Async event constant (shown in the table below) and a DS map which will be available in the called Async event in the async_load variable.</Description>
			<Parameter Name="type" Type="Constant.AsyncEventType" Optional="false">The type of event to perform (see the table above).</Parameter>
			<Parameter Name="ds_map" Type="Id.DsMap" Optional="false">The DS map to use as async_load in the called event.</Parameter>
		</Function>
		<Function Name="event_perform_object" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This functions works the same as event_perform() except that this time you can specify events from another object. There are many options here which allow complete simulation of all possible events, but note that this literally just performs all the code in the event and the game will not modify anything to make it trigger itself manually, for example if you choose to perform a keyboard press event, the event will be triggered but the relevant key will not be recognised as having been pressed. Or if you perform an alarm event, the alarm counter will not be set to -1 but rather continue to count down. You can find a complete list of the available constants this function requires from the the page for the function event_perform().</Description>
			<Parameter Name="obj" Type="Any" Optional="false">The object that should have its event triggered.</Parameter>
			<Parameter Name="type" Type="Constant.EventType" Optional="false">The type of event to perform.</Parameter>
			<Parameter Name="numb" Type="Constant.EventNumber,Real,Constant.VirtualKey" Optional="false">The specific event, if one is necessary (otherwise, just use 0).</Parameter>
		</Function>
		<Function Name="event_user" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you tell the instance to run the actions or code that has been placed within one of the 16 user defined events. These events can only be called in this way, or using the event_perform function.</Description>
			<Parameter Name="numb" Type="Real" Optional="false">The number of event to call, between 0 and 15.</Parameter>
		</Function>
		<Function Name="path_end" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Calling this function will end the current path that the instance is following, as set when the function path_start() was called..</Description>
		</Function>
		<Function Name="path_get_closed" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function can be used to return whether the path is flagged as closed (true) or open (false), ie whether the path loops or if it has a definitive beginning and end.</Description>
			<Parameter Name="index" Type="Asset.GMPath" Optional="false">The index of the path to check.</Parameter>
		</Function>
		<Function Name="path_get_kind" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>Paths can be either smooth or straight (a smooth path calculates a curved path around the defining points, whereas a straight path just goes straight from one point to another). This function can be used to find out whether the given path is smooth (true) or not (false).</Description>
			<Parameter Name="index" Type="Asset.GMPath" Optional="false">The index of the path to check.</Parameter>
		</Function>
		<Function Name="path_get_length" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>You can use this function to get the exact length of a path in pixels. this is not an approximate length from point to point, but rather an exact length along the shape of the path, even when the path is smooth with a high curved precision.</Description>
			<Parameter Name="index" Type="Asset.GMPath" Optional="false">The index of the path to measure.</Parameter>
		</Function>
		<Function Name="path_get_name" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function will return the name of the path that is referenced as a string. The name is whatever has been used to define the path in the editor or (if the path has been created through a code function) it will return a string with the format &quot; _newpathXX&quot; where &quot;XX&quot; is the number of the path generated, starting at 0 and incrementing by one every time a new path is created. Please note that this is only a string and cannot be used to reference the path directly - for that you would need the path index ID. You can, however, use this string to get the path index ID using the returned string along with the function asset_get_index().</Description>
			<Parameter Name="index" Type="Asset.GMPath" Optional="false">The index of the path to check.</Parameter>
		</Function>
		<Function Name="path_get_number" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to return the number of points on a path.</Description>
			<Parameter Name="index" Type="Asset.GMPath" Optional="false">The index of the path to check.</Parameter>
		</Function>
		<Function Name="path_get_point_speed" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the speed of the point (as defined in the Path Editor or when you dynamically add a path point using path_add_point()) expressed as a percentage. So, if you have a path point set to 50 in the path editor, this function would return 50 when used.</Description>
			<Parameter Name="index" Type="Asset.GMPath" Optional="false">The index of the path to check.</Parameter>
			<Parameter Name="n" Type="Real" Optional="false">The point identity to check.</Parameter>
		</Function>
		<Function Name="path_get_point_x" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the x position (in room coordinates) of the point that you input for the path that you index. If the point is outside of the range of the path (ie: a path has 8 points and you ask for the x position of point 10) then a value of 0 will be returned.</Description>
			<Parameter Name="index" Type="Asset.GMPath" Optional="false">The index of the path to check.</Parameter>
			<Parameter Name="n" Type="Real" Optional="false">The point identity to check.</Parameter>
		</Function>
		<Function Name="path_get_point_y" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the y position (in room coordinates) of the point that you input for the path that you index. If the point is outside of the range of the path (ie: a path has 8 points and you ask for the y position of point 10) then a value of 0 will be returned.</Description>
			<Parameter Name="index" Type="Asset.GMPath" Optional="false">The index of the path to check.</Parameter>
			<Parameter Name="n" Type="Real" Optional="false">The point identity to check.</Parameter>
		</Function>
		<Function Name="path_get_precision" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns with what precision the given path has been &quot;smoothed&quot;, and will be an integer value from 1 to 8. Although you can get (and set) this value for a straight-line path it will have no influence over how an instance uses the path as it is only relevant when the path kind is set to &quot;smooth&quot;.</Description>
			<Parameter Name="index" Type="Asset.GMPath" Optional="false">The index of the path to check.</Parameter>
		</Function>
		<Function Name="path_get_speed" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the speed factor of any given position on a path. The position should be a value between 0 and 1 (you can use path_position, for example, if you need the current position of the instance) with 0 being the start position and 1 being the end. The value returned will be the factor by which the actual path_speed is being set. For example, on a path with only two points, 0 and 1, where the point 0 speed factor is 100 and point 1 speed factor is 0, the function path_get_speed(path, 0.5) will return 50.</Description>
			<Parameter Name="index" Type="Asset.GMPath" Optional="false">The index of the path to check.</Parameter>
			<Parameter Name="pos" Type="Real" Optional="false">How far through the path to check. Between 0 (start) and 1 (end), can be decimal.</Parameter>
		</Function>
		<Function Name="path_get_x" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the x coordinate of a position on any given path. 0 is the start of the path, 1 is the end of the path, and anything in between equates to that far through the path. This needn&apos;t be a defining point of the path, it can be anywhere on it.</Description>
			<Parameter Name="index" Type="Asset.GMPath" Optional="false">The index of the path to check.</Parameter>
			<Parameter Name="pos" Type="Real" Optional="false">How far through the path to check. Between 0 (start) and 1 (end).</Parameter>
		</Function>
		<Function Name="path_get_y" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the y coordinate of a position on any given path. 0 is the start of the path, 1 is the end of the path, and anything in between equates to the normalised distance along the length of the path. This value needn&apos;t be a defining point of the path, it can be anywhere on it.</Description>
			<Parameter Name="index" Type="Asset.GMPath" Optional="false">The index of the path to check.</Parameter>
			<Parameter Name="pos" Type="Real" Optional="false">How far through the path to check. Between 0 (start) and 1 (end).</Parameter>
		</Function>
		<Function Name="path_start" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>A path is created from a series of defining points that are linked together and then used to plan the movements of an instance. They can be created with code, or in the Path Editor and they are assigned to an instance to use in the game. You would then use this function to tell your instance which path to follow, what speed to follow the path (measured in pixels per step), how to behave when it reaches the end of the path, and whether to follow the absolute or relative path position. This last part means that it either starts and follows the path exactly as you designed and placed it in the Path Editor (absolute), or it starts and follows the path from the position at which the instance was created (relative).</Description>
			<Parameter Name="path" Type="Asset.GMPath" Optional="false">The path index to start.</Parameter>
			<Parameter Name="speed" Type="Real" Optional="false">The speed of which to follow the path in pixels per step, negative meaning going backwards.</Parameter>
			<Parameter Name="endaction" Type="Constant.PathAction" Optional="false">What to do when the end of the path is reached (see the constants listed below).</Parameter>
			<Parameter Name="absolute" Type="Bool" Optional="false">Whether the calling instance should follow the absolute path as it is in the editor (true) or a relative path to its current position (false).</Parameter>
		</Function>
		<Function Name="path_add" Deprecated="false" ReturnType="Asset.GMPath" Pure="false">
			<Description>With this function you can create a path in GameMaker without using the path editor. this function will return the index of the path which should be stored in a variable and used as the reference for that path from then on. Please note that the created path is empty ie: it has no points defined, so you will then have to use the other available functions to add points to the path or be using MP grids to generate the path. Once you have finished using the path, or wish to create a new one and store its index in the same variable you should first delete the old path with path_delete to prevent memory leaks which can eventually crash your game.</Description>
		</Function>
		<Function Name="path_add_point" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can add a point to the specified path and set its speed factor. This point is added onto the end of the path, irrespective of the position of the point, and the factor is equal to the percentage of path_speed that the following instance actually goes at when it reaches this point in the path. If you wish to place a path point at some other position that is not the end, you should use path_insert_point().</Description>
			<Parameter Name="index" Type="Asset.GMPath" Optional="false">The index of the path to add the point to.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of the new point.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of the new point.</Parameter>
			<Parameter Name="speed" Type="Real" Optional="false">The speed factor of the point (default value is 100).</Parameter>
		</Function>
		<Function Name="path_append" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this code you can append one path onto another one, effectively joining them together, and for this to work, both paths must previously exist. In general you would want to use this function on paths created using path_add(), since if you use it on a path asset, it will permanently affect the path for instances in the game from the moment the function is used until the end of the game.</Description>
			<Parameter Name="index" Type="Asset.GMPath" Optional="false">The new index of the path.</Parameter>
			<Parameter Name="path" Type="Asset.GMPath" Optional="false">The index of the path that will be appended to &apos;index&apos;.</Parameter>
		</Function>
		<Function Name="path_assign" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can copy the path data from one path to another. The path being copied to will be cleared first (should it have any path points) and be completely overwritten by the path being copied from. Neither path is deleted in the process and the result is two paths, with two different indexes, but the exact same form and points. In general you would want to use this function on a path created using path_add(), since if you use it on a path asset, it will permanently affect the path for all instances in the game from the moment the function is used until the end of the game.</Description>
			<Parameter Name="index" Type="Asset.GMPath" Optional="false">The index of the path to be overwritten.</Parameter>
			<Parameter Name="path" Type="Asset.GMPath" Optional="false">The index of the path that will overwrite &apos;index&apos;.</Parameter>
		</Function>
		<Function Name="path_change_point" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can change the position and/or the speed factor of any point previously defined for a path (the path can have been created in the path editor or through code using path_add()). If used on a path from the Asset Browser, note that the function will change the actual asset, and so will permanently affect how the path is used by all instances in the game from the moment the function is used until the end of the game. If this is not what you require, then you should use a function like path_duplicate() to create a copy of the path first, then call this function on the duplicated asset (don&apos;t forget to call path_delete() on the asset when it is no longer required).</Description>
			<Parameter Name="index" Type="Asset.GMPath" Optional="false">The index of the path to change a point of.</Parameter>
			<Parameter Name="n" Type="Real" Optional="false">The defining point to change the attributes of.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The new x coordinate (relative to the path) of the point.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The new y coordinate (relative to the path) of the point.</Parameter>
			<Parameter Name="speed" Type="Real" Optional="false">The new speed factor of the point.</Parameter>
		</Function>
		<Function Name="path_clear_points" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can remove all point definitions from a path, effectively making an &quot;empty&quot; path. This does not delete the path, for that you should use path_delete(), however it should be noted that this function changes the actual path asset, and so will permanently affect how the path is used by all instances in the game from the moment the function is used until the end of the game. If this is not what you require, then you should use a function like path_duplicate() to create a copy of the path first, then call this function on the duplicated asset (don&apos;t forget to call path_delete() on the asset when it is no longer required).</Description>
			<Parameter Name="index" Type="Asset.GMPath" Optional="false">The index of the path to clear.</Parameter>
		</Function>
		<Function Name="path_delete" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>You can use this code to remove a path from memory. If this path has been created dynamically using path_add(), the variable that holds the path index will no longer be valid for accessing the path as it no longer exists, and if the path was created using the Path Editor that path can no longer be accessed in the whole game as you are permanently deleting it.</Description>
			<Parameter Name="index" Type="Asset.GMPath" Optional="false">The index of the path to delete.</Parameter>
		</Function>
		<Function Name="path_delete_point" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can remove a point from the specified path. Path points are numbered from 0 so the first point is always the 0th point and the last path point will be path_get_number() - 1. If you call this function on a path asset, then the removal of the point will be permanent and all instances assigned the path in the future will be missing the point that was removed. If this is not what you require, then you should use a function like path_duplicate() to create a copy of the path first, then call this function on the duplicated asset (don&apos;t forget to call path_delete() on the asset when it is no longer required).</Description>
			<Parameter Name="index" Type="Asset.GMPath" Optional="false">The index of the path to delete a point from.</Parameter>
			<Parameter Name="n" Type="Asset.GMPath" Optional="false">The defining point to delete.</Parameter>
		</Function>
		<Function Name="path_duplicate" Deprecated="false" ReturnType="Asset.GMPath" Pure="false">
			<Description>This function takes a path and copies it into a new path. The new path is created in the process, and the index is returned to be used in all further calls to use this new path.</Description>
			<Parameter Name="index" Type="Asset.GMPath" Optional="false">The index of the existing path to duplicate.</Parameter>
		</Function>
		<Function Name="path_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>his function returns whether a path with the given index exists or not. Note that if you check for the existence of a path through a variable that has yet to have been declared, this will throw an error.</Description>
			<Parameter Name="index" Type="Asset.GMPath" Optional="false">The index of the path to check for.</Parameter>
		</Function>
		<Function Name="path_flip" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function takes all the path points and flips them along the horizontal axis. This function changes the actual path asset, and so will permanently affect how the path is used by all instances in the game from the moment the function is used until the end of the game.If this is not what you require, then you should use a function like path_duplicate() to create a copy of the path first, then call this function on the duplicated asset (don&apos;t forget to call path_delete() on the asset when it is no longer required).</Description>
			<Parameter Name="index" Type="Asset.GMPath" Optional="false">The index of the path to flip.</Parameter>
		</Function>
		<Function Name="path_insert_point" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can insert a new point into a path (the path can have been created in the path editor or through code using path_add()). The point will be added into the path before the point &quot;n&quot; that is specified in the function.</Description>
			<Parameter Name="index" Type="Asset.GMPath" Optional="false">The index of the path to insert the point into.</Parameter>
			<Parameter Name="n" Type="Real" Optional="false">The defining point to insert the new point BEFORE.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate (relative to the path) of the new point.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate (relative to the path) of the new point.</Parameter>
			<Parameter Name="speed" Type="Real" Optional="false">The speed factor of the point.</Parameter>
		</Function>
		<Function Name="path_mirror" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function takes all the path points and mirrors them along the vertical axis. This function changes the actual path asset, and so will permanently affect how the path is used by all instances in the game from the moment the function is used until the end of the game. If this is not what you require, then you should use a function like path_duplicate() to create a copy of the path first, then call this function on the duplicated asset (don&apos;t forget to call path_delete() on the asset when it is no longer required).</Description>
			<Parameter Name="index" Type="Asset.GMPath" Optional="false">The index of the path to mirror.</Parameter>
		</Function>
		<Function Name="path_rescale" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to re-scale the given path along both (or either) the vertical and horizontal axis, basically moving each of the path points to a new position corresponding to this scale around the centre of the path. This function changes the actual path asset, and so will permanently affect how the path is used by all instances in the game from the moment the function is used until the end of the game. If this is not what you require, then you should use a function like path_duplicate() to create a copy of the path first, then call this function on the duplicated asset (don&apos;t forget to call path_delete() on the asset when it is no longer required).</Description>
			<Parameter Name="index" Type="Asset.GMPath" Optional="false">The index of the path to scale.</Parameter>
			<Parameter Name="xscale" Type="Real" Optional="false">What to multiply the current horizontal scale by. Default scale is 1.</Parameter>
			<Parameter Name="yscale" Type="Real" Optional="false">What to multiply the current vertical scale by. Default scale is 1.</Parameter>
		</Function>
		<Function Name="path_reverse" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can reverse the order in which the individual path points are numbered, so, for example, if the path has 5 points, point 0 would become point 4, point 1 would be point 3 and point 2 would not be changed. The actual position of the points remains the same, only the order in which they are processed is changed. This function changes the actual path asset, and so will permanently affect how the path is used by all instances in the game from the moment the function is used until the end of the game. If this is not what you require, then you should use a function like path_duplicate() to create a copy of the path first, then call this function on the duplicated asset (don&apos;t forget to call path_delete() on the asset when it is no longer required).</Description>
			<Parameter Name="index" Type="Asset.GMPath" Optional="false">The index of the path to change.</Parameter>
		</Function>
		<Function Name="path_rotate" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>You can use this function to rotate a given path around its center. Remember that in GameMaker (unless you are using physics) the angles are calculated counter-clockwise, so rotating the path by 90 degrees would rotate the path to the left. This function changes the actual path resource, and so will permanently affect how the path is used by all instances in the game from the moment the function is used until the end of the game. If this is not what you require, then you should use a function like path_duplicate() to create a copy of the path first, then call this function on the duplicated asset (don&apos;t forget to call path_delete() on the asset when it is no longer required).</Description>
			<Parameter Name="index" Type="Asset.GMPath" Optional="false">The index of the path to flip.</Parameter>
			<Parameter Name="angle" Type="Real" Optional="false">The angle of rotation degrees.</Parameter>
		</Function>
		<Function Name="path_set_closed" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to flag a given path as being open (false) or closed (true). A closed path has its start point connected to its end point, forming a loop, and an open path has a definitive, unconnected start and finish. This function changes the actual path asset, and so will permanently affect how the path is used by all instances in the game from the moment the function is used until the end of the game.If this is not what you require, then you should use a function like path_duplicate() to create a copy of the path first, then call this function on the duplicated asset (don&apos;t forget to call path_delete() on the asset when it is no longer required).</Description>
			<Parameter Name="index" Type="Asset.GMPath" Optional="false">The index of the path to change.</Parameter>
			<Parameter Name="closed" Type="Bool" Optional="false">Whether the path is closed (true) or not (false).</Parameter>
		</Function>
		<Function Name="path_set_kind" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set the kind of path that you wish the specified resource to be. This can be either a straight line path (set to 0) or a smoothed path (set to 1) in which case the path precision has to be taken into account too (the precision can be set too using path_set_precision()). This function changes the actual path resource, and so will permanently affect how the path is used by all instances in the game from the moment the function is used until the end of the game.If this is not what you require, then you should use a function like path_duplicate() to create a copy of the path first, then call this function on the duplicated asset (don&apos;t forget to call path_delete() on the asset when it is no longer required).</Description>
			<Parameter Name="index" Type="Asset.GMPath" Optional="false">The index of the path to change.</Parameter>
			<Parameter Name="val" Type="Real" Optional="false">The kind of the path, 0 for straight or 1 for smooth.</Parameter>
		</Function>
		<Function Name="path_set_precision" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can change the &quot;smoothness&quot; of a path. This value must be between 1 and 8, with a low value creating straighter edges with sharper curves between points, while a higher value will round the points and make the path a lot more &quot;curvy&quot;. Note that this function will have no visible effect if the path has not been set to smooth in the path editor or using the function path_set_kind(). This function changes the actual path asset, and so will permanently affect how the path is used by all instances in the game from the moment the function is used until the end of the game. If this is not what you require, then you should use a function like path_duplicate() to create a copy of the path first, then call this function on the duplicated asset (don&apos;t forget to call path_delete() on the asset when it is no longer required).</Description>
			<Parameter Name="index" Type="Asset.GMPath" Optional="false">The index of the path to change.</Parameter>
			<Parameter Name="prec" Type="Real" Optional="false">The precision of the path. Must be an integer between 1 and 8.</Parameter>
		</Function>
		<Function Name="path_shift" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can shift a path along the horizontal and vertical axis. Please note that this will have no visible effect in-game if the instance following the path being shifted follows it relatively (rather than absolutely) as the path&apos;s position is disregarded then. This function changes the actual path asset, and so will permanently affect how the path is used by all instances in the game from the moment the function is used until the end of the game. If this is not what you require, then you should use a function like path_duplicate() to create a copy of the path first, then call this function on the duplicated asset (don&apos;t forget to call path_delete() on the asset when it is no longer required).</Description>
			<Parameter Name="index" Type="Asset.GMPath" Optional="false">The index of the path to change.</Parameter>
			<Parameter Name="xshift" Type="Real" Optional="false">The number of horizontal pixels to shift the path. Negative=left, positive=right.</Parameter>
			<Parameter Name="yshift" Type="Real" Optional="false">The number of vertical pixels to shift the path. Negative=up, positive=down.</Parameter>
		</Function>
		<Function Name="room_add" Deprecated="false" ReturnType="Asset.GMRoom" Pure="false">
			<Description>This function will create a new, empty, room and add it to your game, returning its index to be stored in a variable for all further codes that deal with this room. Note that each room is permanently added to the game until the executable is closed, ie: rooms added through code cannot be deleted again. This has important implications for memory use and so you should use this function with care.</Description>
		</Function>
		<Function Name="room_assign" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will copy one room to another, removing all instances, tiles etc... from the room that is being copied to and replacing them completely with the new room contents. You supply the index to for the room to be copied to (either as defined in the asset browser or as returned by the function room_add()) as well as the index of the source room. Note that calling this function on a room asset created in the Asset Browser will permanently change the contents of the room, and even calling game_restart() will not return the room to it&apos;s original state (only ending the game and opening it again will start with the room in its original state again).</Description>
			<Parameter Name="ind" Type="Asset.GMRoom" Optional="false">The index of the room to be copied to.</Parameter>
			<Parameter Name="source" Type="Asset.GMRoom" Optional="false">The index of the room to be copied from.</Parameter>
		</Function>
		<Function Name="room_duplicate" Deprecated="false" ReturnType="Asset.GMRoom" Pure="false">
			<Description>This will duplicate a given room and return the duplicates index to be used in all further calls to reference the new room.</Description>
			<Parameter Name="index" Type="Asset.GMRoom" Optional="false">The index of the original room to be duplicated.</Parameter>
		</Function>
		<Function Name="room_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check and see whether the room you specify exists or not. This function takes the room index (a real number) and not the room name (a string). This function is most useful when you are creating rooms dynamically using the function room_add(), but you can also use the read only variables room_first and room_last or the functions room_next() and room_previous() to get a specific room index, or provide a variable that has stored the index of any other room in your game.</Description>
			<Parameter Name="index" Type="Asset.GMRoom" Optional="false">The index of the room to check.</Parameter>
		</Function>
		<Function Name="room_get_camera" Deprecated="false" ReturnType="Id.Camera" Pure="true">
			<Description>With this function you can get the unique index ID of the camera assigned to a specific view in a room other than the current one. You give the room to use, the view port to use (from 0 to 7) and the function will return a camera index.</Description>
			<Parameter Name="rm" Type="Asset.GMRoom" Optional="false">The index of the room to get the view camera of</Parameter>
			<Parameter Name="vind" Type="Real" Optional="false">The index of the view port to get the camera of</Parameter>
		</Function>
		<Function Name="room_get_name" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function can be used to return the name of the specified room as a string. Please note that this is only a string and cannot be used to reference the room directly - for that you would need the room index. You can, however, use this string to get the room index using the returned string along with the function asset_get_index().</Description>
			<Parameter Name="index" Type="Asset.GMRoom" Optional="false">The index of the room to check the name of.</Parameter>
		</Function>
		<Function Name="room_get_viewport" Deprecated="false" ReturnType="Array[Real]" Pure="true">
			<Description>With this function you can retrieve the details of a view port in a room other than the current one. You give the room ID and the index of the view port to retrieve (from 0 to 7) and the function will return an array of 5 indices, where:</Description>
			<Parameter Name="rm" Type="Asset.GMRoom" Optional="false">The index of the room to get viewport data from</Parameter>
			<Parameter Name="vind" Type="Real" Optional="false">The index of the view port to get</Parameter>
		</Function>
		<Function Name="room_goto" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function permits you to go to any room in your game project, whether created using code or in the Asset Browser. You supply the room index (stored in the variable for the room name, or as a variable returned from the function room_add()). Note that the room will not change until the end of the event where the function was called, so any code after this has been called will still run if in the same event. This function will also trigger the Room End event.</Description>
			<Parameter Name="index" Type="Asset.GMRoom" Optional="false">The index of the room to go to.</Parameter>
		</Function>
		<Function Name="room_goto_next" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can make your game go to the next one as listed in the Room Manager at the time the game was compiled. If this room does not exist, an error will be thrown and the game will be forced to close. Note that the room will not change until the end of the event where the function was called, so any code after this has been called will still run if in the same event.</Description>
		</Function>
		<Function Name="room_goto_previous" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can make your game go to the previous one as listed in the Room Manager at the time the game was compiled. If this room does not exist, an error will be thrown and the game will be forced to close. Note that the room will not change until the end of the event where the function was called, so any code after this has been called will still run if in the same event. This function will also trigger the Room End event.</Description>
		</Function>
		<Function Name="room_instance_add" Deprecated="false" ReturnType="Id.Instance" Pure="true">
			<Description>With this function you can add an instance into any room other than the current one and at any position within that room. The function returns the unique id of the instance which can then be used in further function calls to set properties etc... of that instance, but only once the game has entered the specified room. If you wish to create an instance in the current room you should be using the function instance_create_layer(). Note that calling this function on a room asset created in the Asset Browser will permanently add the instance to the room, and even calling game_restart() will not return the room to it&apos;s original state (only ending the game and opening it again will start with the room in its original state again).</Description>
			<Parameter Name="index" Type="Asset.GMRoom" Optional="false">The index of the room to add an object instance to.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position of the new instance.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position of the new instance.</Parameter>
			<Parameter Name="obj" Type="Asset.GMObject" Optional="false">The object to add an instance of.</Parameter>
		</Function>
		<Function Name="room_instance_clear" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will clear a room of all instances (no destroy events shall be called for the instances that are being removed). Note that calling this function on a room asset created in the Asset Browser will permanently clear the room of instances, and even calling game_restart() will not return the room to it&apos;s original state (only ending the game and opening it again will start with the room in its original state again).</Description>
			<Parameter Name="index" Type="Asset.GMRoom" Optional="false">The index of the room to clear all instances in.</Parameter>
		</Function>
		<Function Name="room_next" Deprecated="false" ReturnType="Asset.GMRoom" Pure="false">
			<Description>With this function you can retrieve the index of the room after the room input into the function. For example you can use the variable room to get the index of the current room and then use this function to find the room that follows it, as listed in the Room Manager. If there is no room after the one you input then -1 is returned. Note that this function will not recognise or take into consideration rooms that have been added dynamically using room_add() or room_duplicate().</Description>
			<Parameter Name="numb" Type="Asset.GMRoom" Optional="false">The index of the room to get the next one after.</Parameter>
		</Function>
		<Function Name="room_previous" Deprecated="false" ReturnType="Asset.GMRoom" Pure="false">
			<Description>With this function you can retrieve the index of the room before the room input into the function. For example you can use the variable room to get the index of the current room and then use this function to find the room that comes before it, as listed in the Room Manager. If there is no room before the one you input then -1 is returned. Note that this function will not recognise or take into consideration rooms that have been added dynamically using room_add() or room_duplicate().</Description>
			<Parameter Name="numb" Type="Asset.GMRoom" Optional="false">The index of the room to get the one before from.</Parameter>
		</Function>
		<Function Name="room_restart" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will restart the current room, as if it had just been entered. Note that the room will not restart until the end of the event where the function was called, so any code after this has been called will still run if in the same event. This function will also trigger the Room End event.</Description>
		</Function>
		<Function Name="room_set_camera" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can assign a camera to a specific viewport in a room other than the current one. You supply the room index, the view index (from 0 to 7) and then the index of the camera to use.</Description>
			<Parameter Name="rm" Type="Asset.GMRoom" Optional="false">The index of the room to set the view camera of</Parameter>
			<Parameter Name="vind" Type="Real" Optional="false">The index of the view port to assign the camera to</Parameter>
			<Parameter Name="camera" Type="Id.Camera" Optional="false">The index of the camera to assign</Parameter>
		</Function>
		<Function Name="room_set_height" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can change (or set) the height of any room in your game except the current one.</Description>
			<Parameter Name="index" Type="Asset.GMRoom" Optional="false">The index of the room to set the height of.</Parameter>
			<Parameter Name="h" Type="Real" Optional="false">The new height of the room in pixels.</Parameter>
		</Function>
		<Function Name="room_set_persistent" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can change (or set) the persistence of any room in your game except the current one. A room with persistence flagged as true it will maintain the state of all instances within that room if the player leaves and then returns, whereas if persistence is flagged as false it will be reset to the initial state every time. You should note that a persistent room uses considerably more memory than a normal room and it is not recommended to have too many of them in your game.</Description>
			<Parameter Name="index" Type="Asset.GMRoom" Optional="false">The index of the room to set the persistence of.</Parameter>
			<Parameter Name="val" Type="Bool" Optional="false">Whether the room shall be persistent (true) or not (false).</Parameter>
		</Function>
		<Function Name="room_set_viewport" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the view port properties for any room in your game except the current one. You supply the room index to set the view port in, the view port index (from 0 to 7) and then whether the view port should be visible at the start of the room or not (set to true to make the port visible, and false otherwise). After that you set the x and y coordinate (corresponding to the top left position of the view port) and then the width and height in pixels.</Description>
			<Parameter Name="rm" Type="Asset.GMRoom" Optional="false">The index of the room to set</Parameter>
			<Parameter Name="vind" Type="Real" Optional="false">The index of the view port to set</Parameter>
			<Parameter Name="vis" Type="Bool" Optional="false">The visibility of the view port (true is visible, false is invisible)</Parameter>
			<Parameter Name="xport" Type="Real" Optional="false">The x position for the view port in the room</Parameter>
			<Parameter Name="yport" Type="Real" Optional="false">The y position of the view port in the room</Parameter>
			<Parameter Name="wport" Type="Real" Optional="false">The width (in pixels) of the view port</Parameter>
			<Parameter Name="hport" Type="Real" Optional="false">The height (in pixels) of the view port</Parameter>
		</Function>
		<Function Name="room_set_view_enabled" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can enable (true) or disable (false) the view of any room within your game except the current one.</Description>
			<Parameter Name="index" Type="Asset.GMRoom" Optional="false">The index of the room to set.</Parameter>
			<Parameter Name="val" Type="Bool" Optional="false">Whether to enable (true) or disable (false) views in the given room.</Parameter>
		</Function>
		<Function Name="room_set_width" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can change (or set) the width of any room in your game except the current one.</Description>
			<Parameter Name="index" Type="Asset.GMRoom" Optional="false">The index of the room to set the width of.</Parameter>
			<Parameter Name="w" Type="Real" Optional="false">The new width of the room in pixels.</Parameter>
		</Function>
		<Function Name="layer_background_alpha" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function controls the alpha (transparency) of the background sprite. You give the background element ID (which you get when you create a background element using layer_background_create() or when you use the function layer_background_get_id()), and then set the alpha value to use. Alpha can be between 0 (fully transparent) and 1 (fully opaque) with the default alpha value for the background element being 1. Note that if the layer the background element has been assigned to is not visible - or the element itself has been made invisible - you will not see any difference with this function until the layer or element has been made visible again.</Description>
			<Parameter Name="background_element_id" Type="Id.BackgroundElement" Optional="false">The unique ID value of the background element to change</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha for background sprite, from 0 to 1 (default is 1)</Parameter>
		</Function>
		<Function Name="layer_background_blend" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function controls the blending (or &quot;tinting&quot;) of the background sprite and the default value is -1 (which represents the constant c_white, which can also be used). Any other value (including internal colour constants like c_red, or c_aqua) will blend the specified colour with the original sprite. You give the background element ID (which you get when you create a background element using layer_background_create() or when you use the function layer_background_get_id()), and then set the blending colour to use. Below you can see an example of a sprite that has been blended with different colours:</Description>
			<Parameter Name="background_element_id" Type="Id.BackgroundElement" Optional="false">The unique ID value of the background element to change</Parameter>
			<Parameter Name="blend" Type="Constant.Color" Optional="false">The colour to blend with the background sprite (default is c_white)</Parameter>
		</Function>
		<Function Name="layer_background_create" Deprecated="false" ReturnType="Id.BackgroundElement" Pure="true">
			<Description>With this function you can assign a sprite resource to a layer to be used as a background in your project. You supply the layer ID (which you get when you create the layer using layer_create()) or the layer name (as a string - this will have a performance impact) and a sprite index (which would be the name of the sprite as shown in the Asset Browser), and it will be added to the layer. The function returns the unique ID value for the element, which can then be used in further layer functions for backgrounds.</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the layer to target (or the layer name as a string)</Parameter>
			<Parameter Name="sprite" Type="Asset.GMSprite" Optional="false">The sprite index to be used</Parameter>
		</Function>
		<Function Name="layer_background_destroy" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will destroy the given background element. You supply the background ID (which you get when you create the background using layer_background_create() or when you use the layer ID along with layer_get_background_id()) and this will remove it. Note that this does not remove the layer, only the background from it, and if the background is one that has been added in the room editor, then the next time you leave the room and then return, the background will be recreated again. However if the room is persistent, the background will be removed unless room persistence is switched off again.</Description>
			<Parameter Name="background_element_id" Type="Id.BackgroundElement" Optional="false">The unique ID value of the background to be destroyed</Parameter>
		</Function>
		<Function Name="layer_background_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>You can use this function to check and see if a background element exists on any given layer. You supply the layer ID (which you get when you create the layer using layer_create()) or the layer name (as a string - this will have a performance impact) and the background element ID (which you get when you create a background element using layer_background_create() or when you use the function layer_background_get_id()) and the function will return either true if the element exists, or false if it does not.</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the layer to target (or the layer name as a string)</Parameter>
			<Parameter Name="background_element_id" Type="Id.BackgroundElement" Optional="false">The unique ID value of the background element to check</Parameter>
		</Function>
		<Function Name="layer_background_get_alpha" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to get the alpha value of the background element. You give the background element ID (which you get when you create a background element using layer_background_create() or when you use the function layer_background_get_id()), and the function will return a value between 0 (fully transparent) and 1 (fully opaque).</Description>
			<Parameter Name="background_element_id" Type="Id.BackgroundElement" Optional="false">The unique ID value of the background element to get the information from</Parameter>
		</Function>
		<Function Name="layer_background_get_blend" Deprecated="false" ReturnType="Constant.Color" Pure="true">
			<Description>This function can be used to get the blend colour of the background element. You give the background element ID (which you get when you create a background element using layer_background_create() or when you use the function layer_background_get_id()), and the function will return real value that represents the colour assigned.</Description>
			<Parameter Name="background_element_id" Type="Id.BackgroundElement" Optional="false">The unique ID value of the background element to get the information from</Parameter>
		</Function>
		<Function Name="layer_background_get_htiled" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function can be used to find out if the background element is tiled horizontally or not. You give the background element ID (which you get when you create a background element using layer_background_create() or when you use the function layer_background_get_id()), and the function will return either true if the element is currently tiled, or false if it is not.</Description>
			<Parameter Name="background_element_id" Type="Id.BackgroundElement" Optional="false">The unique ID value of the background element to get the information from</Parameter>
		</Function>
		<Function Name="layer_background_get_id" Deprecated="false" ReturnType="Id.BackgroundElement" Pure="true">
			<Description>This function can be used to retrieve the unique ID value of the background element on a layer. You supply the layer ID (which you get when you use the layer name along with layer_get_id()) and the function will return the ID value associated with the background element on the layer. Note that this function is specifically designed for use with backgrounds that have been added in the IDE, as if you add a background to a layer through code using the function layer_background_create(), then it will return the unique ID for the background element added.</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the layer to target</Parameter>
		</Function>
		<Function Name="layer_background_get_index" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to get the current image index value of the background element. You give the background element ID (which you get when you create a background element using layer_background_create() or when you use the function layer_background_get_id()), and the function will return real value that represents the image index being shown for the sprite. The function will return -1 if either the background element doesn&apos;t exist or the element doesn&apos;t have a valid sprite assigned to it.</Description>
			<Parameter Name="background_element_id" Type="Id.BackgroundElement" Optional="false">The unique ID value of the background element to get the information from</Parameter>
		</Function>
		<Function Name="layer_background_get_speed" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to get the current speed multiplier value of the background element. You give the background element ID (which you get when you create a background element using layer_background_create() or when you use the function layer_background_get_id()), and the function will return real value that represents the speed multiplier being used to animate the sprite. Default value is 1.</Description>
			<Parameter Name="background_element_id" Type="Id.BackgroundElement" Optional="false">The unique ID value of the background element to get the information from</Parameter>
		</Function>
		<Function Name="layer_background_get_sprite" Deprecated="false" ReturnType="Asset.GMSprite" Pure="true">
			<Description>This function can be used to get the current sprite index value of the background element. You give the background element ID (which you get when you create a background element using layer_background_create() or when you use the function layer_background_get_id()), and the function will return a real value that represents the sprite index being shown. If the element has no sprite assigned, the function will return -1.</Description>
			<Parameter Name="background_element_id" Type="Id.BackgroundElement" Optional="false">The unique ID value of the background element to get the information from</Parameter>
		</Function>
		<Function Name="layer_background_get_stretch" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function can be used to get the stretched state of the background element sprite. You give the background element ID (which you get when you create a background element using layer_background_create() or when you use the function layer_background_get_id()), and the function will return either true if the element sprite is currently stretched to fit the room, or false if it is not.</Description>
			<Parameter Name="background_element_id" Type="Id.BackgroundElement" Optional="false">The unique ID value of the background element to get the information from</Parameter>
		</Function>
		<Function Name="layer_background_get_visible" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function can be used to get the visible state of the background element. You give the background element ID (which you get when you create a background element using layer_background_create() or when you use the function layer_background_get_id()), and the function will return either true if the element is currently visible, or false if it is not. Note that this return value is not affected by whether the layer the element is on is visible or not.</Description>
			<Parameter Name="background_element_id" Type="Id.BackgroundElement" Optional="false">The unique ID value of the background element to get the information from</Parameter>
		</Function>
		<Function Name="layer_background_get_vtiled" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function can be used to find out if the background element is tiled vertically or not. You give the background element ID (which you get when you create a background element using layer_background_create() or when you use the function layer_background_get_id()), and the function will return either true if the element is currently tiled, or false if it is not.</Description>
			<Parameter Name="background_element_id" Type="Id.BackgroundElement" Optional="false">The unique ID value of the background element to get the information from</Parameter>
		</Function>
		<Function Name="layer_background_get_xscale" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to get the current scale multiplier value of the background element. You give the background element ID (which you get when you create a background element using layer_background_create() or when you use the function layer_background_get_id()), and the function will return real value that represents the scale multiplier being used to draw the sprite. Default value is 1.</Description>
			<Parameter Name="background_element_id" Type="Id.BackgroundElement" Optional="false">The unique ID value of the background element to get the information from</Parameter>
		</Function>
		<Function Name="layer_background_get_yscale" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to get the current scale multiplier value of the background element. You give the background element ID (which you get when you create a background element using layer_background_create() or when you use the function layer_background_get_id()), and the function will return real value that represents the scale multiplier being used to draw the sprite. Default value is 1.</Description>
			<Parameter Name="background_element_id" Type="Id.BackgroundElement" Optional="false">The unique ID value of the background element to get the information from</Parameter>
		</Function>
		<Function Name="layer_background_htiled" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>Using this function you can change whether the given background element on a layer should be tiled horizontally or not. You give the background element ID (which you get when you create a background element using layer_background_create() or when you use the function layer_background_get_id()), and then set the tiling value. If set to true then the element will be displayed tiled horizontally across the room, and when set to false, the element will not be tiled. This function is for 2D projects only, and will not work correctly when a 3D camera projection is used.</Description>
			<Parameter Name="background_element_id" Type="Id.BackgroundElement" Optional="false">The unique ID value of the background element to change</Parameter>
			<Parameter Name="visible" Type="Bool" Optional="false">The horizontal tiling toggle, which can be true or false</Parameter>
		</Function>
		<Function Name="layer_background_index" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function can be used to set the image index of the background sprite which has multiple sub-images. You give the background element ID (which you get when you create a background element using layer_background_create() or when you use the function layer_background_get_id()), and then set the image index to use. If you set a value outside of the range of sub-images, then the image index will loop around.</Description>
			<Parameter Name="background_element_id" Type="Id.BackgroundElement" Optional="false">The unique ID value of the background element to change</Parameter>
			<Parameter Name="index" Type="Real" Optional="false">The image index to use for the background</Parameter>
		</Function>
		<Function Name="layer_background_speed" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function can be used to set the speed of an animating sprite that has been assigned to a background element. You give the background element ID (which you get when you create a background element using layer_background_create() or when you use the function layer_background_get_id()), and then set the animation speed. If the IDE has set the animation speed for the sprite used to be calculated as Frames Per Game Frame, then the speed value given is a multiplier, with 1 being the default value, and setting it to 0.5 will half the animation speed, while setting it to 2 will double it. However, if the IDE has set the animation speed for the sprite used to be calculated as Frames Per Second, then the speed value given is a literal frames per second value, so setting this to 5, for example, will set the animation to loop 5 frames every second that the game runs. If the background element has no sprite attached or the sprite used has no sub-images, this function will have no effect.</Description>
			<Parameter Name="background_element_id" Type="Id.BackgroundElement" Optional="false">The unique ID value of the background element to change</Parameter>
			<Parameter Name="speed" Type="Real" Optional="false">The speed multiplier/value to use for the element</Parameter>
		</Function>
		<Function Name="layer_background_sprite" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>Using this function you can set the sprite index of the background element. You supply the background element ID (which you get when you create a background element using layer_background_create() or when you use the function layer_background_get_id()), and then give a sprite index to be used. The background element image will be replaced with the new sprite. If you give a value of -1, the element will have no sprite assigned (but will still exist and can have a sprite assigned again later).</Description>
			<Parameter Name="background_element_id" Type="Id.BackgroundElement" Optional="false">The unique ID value of the background element to change</Parameter>
			<Parameter Name="sprite_index" Type="Asset.GMSprite" Optional="false">The sprite index of the sprite to use for the background element</Parameter>
		</Function>
		<Function Name="layer_background_stretch" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>Using this function you can toggle a background element sprite to stretch to fit the room or remain at 1:1 with the resolution. You supply the background element ID (which you get when you create a background element using layer_background_create() or when you use the function layer_background_get_id()), and then set the stretch argument to true or false. When set to true the element sprite will be stretched to fit the room (either scaled up or scaled down depending on the sizes of the sprite and the room), and when set to false, the element sprite will be displayed at its native resolution.</Description>
			<Parameter Name="background_element_id" Type="Id.BackgroundElement" Optional="false">The unique ID value of the background element to change</Parameter>
			<Parameter Name="stretch" Type="Bool" Optional="false">The stretch toggle, which can be true or false</Parameter>
		</Function>
		<Function Name="layer_background_visible" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>Using this function you can toggle a background elements visibility. You supply the background element ID (which you get when you create a background element using layer_background_create() or when you use the function layer_background_get_id()), and then set the visible argument to true or false. When set to true the element will be displayed, and when set to false, the element will not be displayed. Note that this is dependent on the layer visibility, and even if the background element is flagged as visible, it will not be drawn if the layer it is on is flagged as not visible.</Description>
			<Parameter Name="background_element_id" Type="Id.BackgroundElement" Optional="false">The unique ID value of the background element to change</Parameter>
			<Parameter Name="visible" Type="Bool" Optional="false">The visibility toggle, which can be true or false</Parameter>
		</Function>
		<Function Name="layer_background_vtiled" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>Using this function you can change whether the given background element on a layer should be tiled vertically or not. You give the background element ID (which you get when you create a background element using layer_background_create() or when you use the function layer_background_get_id()), and then set the tiling value. If set to true then the element will be displayed tiled vertically down the room, and when set to false, the element will not be tiled. This function is for 2D projects only, and will not work correctly when a 3D camera projection is used.</Description>
			<Parameter Name="background_element_id" Type="Id.BackgroundElement" Optional="false">The unique ID value of the background element to change</Parameter>
			<Parameter Name="visible" Type="Bool" Optional="false">The vertical tiling toggle, which can be true or false</Parameter>
		</Function>
		<Function Name="layer_background_xscale" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function can be used to set the scale along the x-axis of a background element. You give the background element ID (which you get when you create a background element using layer_background_create() or when you use the function layer_background_get_id()), and then set the scale value. The scale value you give is a multiplier that will be used to change the way the background element is displayed, where a value of 0.5 would display the element at half scale, and a value of 2 would display at double scale. Note that negative values are valid, and will &quot;flip&quot; the element around the (0,0) position, so an x scale of -1 would show the image reversed.</Description>
			<Parameter Name="background_element_id" Type="Id.BackgroundElement" Optional="false">The unique ID value of the background element to change</Parameter>
			<Parameter Name="xscale" Type="Real" Optional="false">The scale value to use (1 is no scaling)</Parameter>
		</Function>
		<Function Name="layer_background_yscale" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function can be used to set the scale along the y-axis of a background element. You give the background element ID (which you get when you create a background element using layer_background_create() or when you use the function layer_background_get_id()), and then set the scale value. The scale value you give is a multiplier that will be used to change the way the background element is displayed, where a value of 0.5 would display the element at half scale, and a value of 2 would display at double scale. Note that negative values are valid, and will &quot;flip&quot; the element around the (0,0) position, so an x scale of -1 would show the image reversed.</Description>
			<Parameter Name="background_element_id" Type="Id.BackgroundElement" Optional="false">The unique ID value of the background element to change</Parameter>
			<Parameter Name="speed" Type="Real" Optional="false">The speed multiplier/value to use for the element</Parameter>
		</Function>
		<Function Name="layer_add_instance" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function can be used to move a given instance from the layer it is currently on to another layer. You supply the layer ID (which you get when you create the layer using layer_create()) or the layer name (as a string - this will have a performance impact) and the instance ID of the instance to move between layers. For example, say your player is on a layer that is at a lower depth than another layer and you want it to appear behind the layers between the two. You can use this function to switch the player from the foreground layer to the background layer and make it appear behind the other layers being drawn.</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the instance layer to target (or the layer name as a string)</Parameter>
			<Parameter Name="instance_id" Type="Id.Instance" Optional="false">The unique instance ID value of the instance to move over to the target layer</Parameter>
		</Function>
		<Function Name="layer_create" Deprecated="false" ReturnType="Id.Layer" Pure="false">
			<Description>This function is used to create a new layer within the current room. You supply the depth that the new layer is to occupy and the function returns the unique Layer ID value that can then be used to access the layer in further functions. You can also supply an optional &quot;name&quot; argument, which will enable you to give the layer a specific name (as a string), and instead of using the layer ID to access the layer, you can use this name string instead, although it should be noted that using name strings will have a greater impact on performance than using just the ID value. If you do not specify the name of the layer, then the created layer will be assigned a name with the format &quot;_layer_XXX&quot;, where &quot;XXX&quot; is a hex value used to give the layer a unique name.</Description>
			<Parameter Name="depth" Type="Real" Optional="false">The depth that the layer has to be created at.</Parameter>
			<Parameter Name="name" Type="String" Optional="true">The name to give the layer (a string - optional)</Parameter>
		</Function>
		<Function Name="layer_depth" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to change the depth of the given layer, changing the order in which its contents will be rendered to the screen. You supply the layer ID (which you get when you create the layer using layer_create()) or the layer name (as a string - this will have a performance impact) and then give the new depth to set it to (an integer value form -16000 to 16000). The layer depth is defined as being higher when &quot;further away&quot; from the camera and lower when &quot;closer&quot; to the camera, so if you have three layers with depths -100, 0, 100, the layers will draw in the order 100, 0, -100, so that the &quot;top&quot; layer (i.e., the closest to the camera view and so drawn over everything else) will be the layer with the -100 depth.</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the layer to set the depth of (or the layer name as a string)</Parameter>
			<Parameter Name="depth" Type="Real" Optional="false">The new depth for the layer</Parameter>
		</Function>
		<Function Name="layer_destroy" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will destroy the given layer. You supply the layer ID (which you get when you create the layer using layer_create()) or the layer name (as a string - this will have a performance impact) and this will remove it from the current room. If the layer is one that has been designed in the room editor, then the next time you leave the room and then return, the layer will be recreated again with the original contents, however if the room is persistent, the layer will be removed unless room persistence is switched off again. When you destroy a layer in this way, all it&apos;s contents will be removed too, so any reference IDs for backgrounds or tile maps, etc... will no longer be valid and any instances assigned to the layer will be destroyed (performing their Destroy Event at the same time, if they have one, as well as the Clean Up Event).</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the layer to destroy (or the layer name as a string)</Parameter>
		</Function>
		<Function Name="layer_destroy_instances" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to destroy all the instances assigned to the given layer. You supply the layer ID (which you get when you create the layer using layer_create()) or the layer name (as a string - this will have a performance impact), and then all instances that are on the layer will be removed from the game, triggering their Destroy and Clean Up events.</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the layer to set the depth of (or the layer name as a string)</Parameter>
		</Function>
		<Function Name="layer_element_move" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>You can use this function to move an element from one layer to another. You give the element ID, as returned by the function used to create the element or the room editor or the function layer_get_all_elements(), and then you give the layer ID (which you get when you create the layer using layer_create()) or the layer name (as a string - this will have a performance impact).</Description>
			<Parameter Name="element_id" Type="Any" Optional="false">The unique ID value of the element to move</Parameter>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the layer to move the element to (or the layer name as a string)</Parameter>
		</Function>
		<Function Name="layer_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function can be used to check if the given layer exists. You supply the layer ID (which you get when you create the layer using layer_create()) or the layer name (as a string - this will have a performance impact) and the function will return a boolean value of true if it exists or false if it does not.</Description>
			<Parameter Name="layer_name" Type="String,Id.Layer" Optional="false">The name of the layer (a string or ID value)</Parameter>
		</Function>
		<Function Name="layer_force_draw_depth" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function forces all layers to be drawn at the specified z depth. This does not change the order the layers are rendered in and they&apos;ll still be drawn in depth order, it simply changes what z value is used. In general you do not need to worry about this, but if you have layers that have a depth outside of the legal range (-16000 to 16000) then they won&apos;t be rendered, so you can force the Z depth to a reasonable value - 0 for example - and they will all be rendered fine. Note that this is generally only for use with legacy projects from previous version of GameMaker where you could have draw depths higher or lower than the permitted layer range.</Description>
			<Parameter Name="force" Type="Bool" Optional="false">Whether to enable (set to true or disable (set to false) Z depth forcing</Parameter>
			<Parameter Name="depth" Type="Real" Optional="false">The new Z depth</Parameter>
		</Function>
		<Function Name="layer_get_all" Deprecated="false" ReturnType="Array[Id.Layer]" Pure="true">
			<Description>This function will return an array populated with the unique ID values of each layer in the room.</Description>
		</Function>
		<Function Name="layer_get_all_elements" Deprecated="false" ReturnType="Array[Any]" Pure="true">
			<Description>You can use this function to get the element IDs of the given layer. You supply the layer ID (which you get when you create the layer using layer_create()) or the layer name (as a string - this will have a performance impact) and the function will return an array of IDs, where each entry in the array is a unique ID for an element on that layer. For example, if the layer is an Asset Layer, the array will be populated with the ID values for each sprite asset that is assigned to the layer. Note that using code to work with layers means that you can assign different element types to the same layer - so you can have sprite assets along with instances, for example - in which case you can then use the function layer_get_element_type() to get the type of element the ID relates to.</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the layer to get the elements from (or the layer name as a string)</Parameter>
		</Function>
		<Function Name="layer_get_depth" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>You can use this function to get the depth value associated with a given layer. You supply the layer ID (which you get when you create the layer using layer_create()) or the layer name (as a string - this will have a performance impact) and the function will return that layers depth as a real number. Note that depth is defined as being higher the &quot;further away&quot; from the camera and lower the &quot;closer&quot; to the camera, so if you have three layers with depths -100, 0, 100, the layers will draw in the order 100, 0, -100, so that the &quot;top&quot; layer (ie, the closest to the camera view and so drawn over everything else) will be the layer with the -100 depth.</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the layer to get the depth of (or the layer name as a string)</Parameter>
		</Function>
		<Function Name="layer_get_element_layer" Deprecated="false" ReturnType="Id.Layer" Pure="true">
			<Description>You can use this function to get the Layer ID that the given element is on. You supply the unique element ID value (for example, as returned by the function that created the element or from the room editor) and the function will return the unique ID of the layer that the element is found on. If the element ID given is not a valid one, then the function will return -1.</Description>
			<Parameter Name="element_id" Type="Any" Optional="false">The unique ID value of the element to get the layer of</Parameter>
		</Function>
		<Function Name="layer_get_element_type" Deprecated="false" ReturnType="Constant.LayerElementType" Pure="true">
			<Description>You can use this function to get the element type for the given element. You supply the unique element ID value (for example, as returned the function that created the element or from the room editor) and the function will return one of the following constants (or -1 if the element does not exist or the ID value is erroneous):</Description>
			<Parameter Name="layer" Type="Any" Optional="false">The unique ID value of the element to get the type of</Parameter>
		</Function>
		<Function Name="layer_is_draw_depth_forced" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to retrieve the Z depth set for rendering layers within the room. See layer_force_draw_depth() for more information.</Description>
		</Function>
		<Function Name="layer_get_hspeed" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>You can use this function to retrieve the horizontal speed (in pixels per game frame) of the layer within the currently scoped room. You supply the layer ID (which you get when you create the layer using layer_create()) or the layer name (as a string - this will have a performance impact) and the function returns a real number for the horizontal speed, where a positive value is to the right and a negative value to the left. Default is 0 (unless set in the room editor).</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the layer to get the horizontal speed from</Parameter>
		</Function>
		<Function Name="layer_get_id" Deprecated="false" ReturnType="Id.Layer" Pure="true">
			<Description>This function can be used to get the unique ID value for a given layer. In the IDE, all layers have a name and a type, and to be able to edit or change them through code you must give the layer ID value. This function is used to retrieve this ID by using the name (a string) of the layer (as written in the IDE). If you create a new layer through code using the function layer_create() then that function will return the unique ID value instead (dynamical created layers do not get names). Note that if you give the name of a layer that does not exist in the current room, then you will get an error and the project will crash.</Description>
			<Parameter Name="layer_name" Type="String" Optional="false">The name of the layer (a string)</Parameter>
		</Function>
		<Function Name="layer_get_id_at_depth" Deprecated="false" ReturnType="Array[Id.Layer]" Pure="true">
			<Description>You can use this function to get the IDs of all layers assigned a specific depth. You give the depth to check and the function will return an array with 1 or more entries depending on whether there are any layers at the given depth or not. If there are no layers at the given depth then the array will have a single entry at the [0] position with a value of -1, but, if there are layers at the depth, then an entry will be made in the array for each layer found - the entry value will be the unique ID value for a layer.</Description>
			<Parameter Name="depth" Type="Real" Optional="false">The depth to check and retrieve the layer IDs from.</Parameter>
		</Function>
		<Function Name="layer_get_name" Deprecated="false" ReturnType="String" Pure="true">
			<Description>You can use this function to get the name of the given layer. You supply the unique layer ID value and if the layer is one of the named layers created in the room editor, then the function will return a string with the layer name. If the layer is not one of the room editor ones (ie: it was created using layer_create()) then an empty string will be returned.</Description>
			<Parameter Name="layer_id" Type="Id.Layer" Optional="false">The unique ID value of the layer to get the name of</Parameter>
		</Function>
		<Function Name="layer_get_script_begin" Deprecated="false" ReturnType="Function" Pure="true">
			<Description>You supply the layer ID (which you get when you create the layer using layer_create()) or the layer name (as a string - this will have a performance impact) and this function will return the script function index of the function assigned to run at the beginning of rendering for that layer, or it will return -1 if no function is assigned. You can assign script functions to a layer with layer_script_begin() and layer_script_end().</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the layer to target (or the layer name as a string)</Parameter>
		</Function>
		<Function Name="layer_get_script_end" Deprecated="false" ReturnType="Function" Pure="true">
			<Description>This function returns the script function index of the function assigned to run at the end of rendering the given layer, or it will return -1 if no function is assigned. You supply the layer ID (which you get when you create the layer using layer_create()) or the layer name (as a string - this will have a performance impact). You can assign script functions to a layer with layer_script_begin() and layer_script_end().</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the layer to target (or the layer name as a string)</Parameter>
		</Function>
		<Function Name="layer_get_shader" Deprecated="false" ReturnType="Asset.GMShader" Pure="true">
			<Description>This function can be used to check if the given layer has a shader assigned to it. You supply the layer ID (which you get when you create the layer using layer_create()) or the layer name (as a string - this will have a performance impact), and the function will return either the shader index of the shader assigned, or -1 if no shader is assigned.</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the layer to target (or the layer name as a string)</Parameter>
		</Function>
		<Function Name="layer_get_target_room" Deprecated="false" ReturnType="Asset.GMRoom" Pure="true">
			<Description>This function will return the current room being targeted by the layer functions. See layer_set_target_room() for more information.</Description>
		</Function>
		<Function Name="layer_get_visible" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check whether a layer is visible or not. You supply the layer ID (which you get when you create the layer using layer_create()) or the layer name (as a string - this will have a performance impact) and the function will return true if it is visible, and false otherwise.</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the layer to target (or the layer name as a string)</Parameter>
		</Function>
		<Function Name="layer_get_vspeed" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>You can use this function to retrieve the vertical speed (in pixels per game frame) of the layer within the currently scoped room. You supply the layer ID (which you get when you create the layer using layer_create()) or the layer name (as a string - this will have a performance impact) and the function returns a real number for the vertical speed, where a positive value is down and a negative value up. Default is 0 (unless set in the room editor).</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the layer to get the vertical speed from</Parameter>
		</Function>
		<Function Name="layer_get_x" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>You can use this function to retrieve the x position of the layer within the currently scoped room. You supply the layer ID (which you get when you create the layer using layer_create()) or the layer name (as a string - this will have a performance impact) and the function returns a real number for the x position of the layer, relative to the (0,0) position of the room. Default is 0.</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the layer to get the x position of</Parameter>
		</Function>
		<Function Name="layer_get_y" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>You can use this function to retrieve the y position of the layer within the currently scoped room. You supply the layer ID (which you get when you create the layer using layer_create()) or the layer name (as a string - this will have a performance impact) and the function returns a real number for the x position of the layer, relative to the (0,0) position of the room. Default is 0.</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the layer to get the y position of</Parameter>
		</Function>
		<Function Name="layer_has_instance" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function can be used to check if a given instance is currently assigned to the given layer. You supply the layer ID (which you get when you create the layer using layer_create()) or the layer name (as a string - this will have a performance impact) and the instance ID of the instance to check for. You can also give an object_index (ie: the name of the object in the Asset Browser) and the function will check if any instances of that object are on the given layer. The function will return true if the instance is on the layer and false if it is not.</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the layer to target (or the layer name as a string)</Parameter>
			<Parameter Name="instance_id" Type="Id.Instance" Optional="false">The unique instance ID or the object index of the instance to check for</Parameter>
		</Function>
		<Function Name="layer_hspeed" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>You can use this function to set the horizontal speed (in pixels per game frame) of the layer within the currently scoped room. You supply the layer ID (which you get when you create the layer using layer_create()) or the layer name (as a string - this will have a performance impact) and the speed value to set, where a positive value is to the right and a negative value to the left.</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the layer to set the horizontal speed of</Parameter>
			<Parameter Name="hspd" Type="Real" Optional="false">The horizontal speed (in pixels per game frame) to set</Parameter>
		</Function>
		<Function Name="layer_instance_get_instance" Deprecated="false" ReturnType="Id.Instance" Pure="true">
			<Description>This function can be used to get the unique instance ID of the given instance element. You give the instance element ID (see the code example below for how to get this), and the function will return a real value that represents the unique instance id for the element. If the element is not an instance, the function will return -1.</Description>
			<Parameter Name="element_id" Type="Any" Optional="false">The unique ID value of the instance element to get the ID of</Parameter>
		</Function>
		<Function Name="layer_reset_target_room" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function is used to reset the layer target to the current room. See the function layer_set_target_room() for further information.</Description>
		</Function>
		<Function Name="layer_script_begin" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can assign a script function to a layer and it will be called before the layer is rendered. When adding a function to a layer, in this way it will be run at the start of each of the different draw events so you may want to check in the function assigned which event is currently rendering and adapt the code to suit. This can be done by checking the event_type and/or the event_number (see the extended example below). Note that the function is not meant to be called in any draw events or step events, but rather only needs to be called at the start of the room in the Room Creation Code or in the Create Event / Room Start Event of an instance.</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the layer to target (or the layer name as a string)</Parameter>
			<Parameter Name="script" Type="Asset.GMScript,Function,Real" Optional="false">The script function index to assign to the layer (or -1)</Parameter>
		</Function>
		<Function Name="layer_script_end" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can assign a script function to a layer and it will be called after the layer is rendered. When adding a function to a layer in this way, it will be run at the end of each of the different draw events so you may want to check in the function assigned which event is currently finished rendering and adapt the code to suit. This can be done by checking the event_type and/or the event_number (see the extended example below). Note that the function is not meant to be called in any draw events or step events, but rather only needs to be called at the start of the room in the Room Creation Code or in the Create Event / Room Start Event of an instance.</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the layer to target (or the layer name as a string)</Parameter>
			<Parameter Name="script" Type="Asset.GMScript,Function,Real" Optional="false">The script function index to assign to the layer (or -1)</Parameter>
		</Function>
		<Function Name="layer_set_target_room" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>When you call this function you are telling GameMaker that all further layer functions should be applied to the given room. In this way you can procedurally change or generate layers and layer contents in a room that is not the current room. When you are finished adding layers or layer elements to a room, call the function layer_reset_target_room() to reset the room target (or call this function again with a room argument of -1). Note that this function can only be used on rooms other than the current room, and is designed so that you can add/remove layers and layer elements to rooms other than the room that is currently running.</Description>
			<Parameter Name="room" Type="Asset.GMRoom" Optional="false">The room to target for all further layer functions</Parameter>
		</Function>
		<Function Name="layer_set_visible" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can toggle the visibility of a layer. You supply the layer ID (which you get when you create the layer using layer_create()) or the layer name (as a string - this will have a performance impact) as well as the toggle value for the layer where visible is true and invisible is false.</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the layer to target (or the layer name as a string)</Parameter>
			<Parameter Name="visible" Type="Bool" Optional="false">Whether the layer should be visible (true) or not (false)</Parameter>
		</Function>
		<Function Name="layer_shader" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can assign a shader resource to any given layer and the layer will then be rendered using that shader. You supply either the unique ID value of the layer or the name of the layer (as a string - this will have a performance impact) , along with the ID of the shader to use. The shader must have been created previously in the Asset Browser and the shader index (the name of the shader resource) is then passed to this function. If the layer assigned has instances added to it, then the shader will be applied to all the draw events that the instance uses - for example if the instance has a Draw GUI Begin event, then the shader will be applied automatically to it. The shader will also affect any other graphic elements drawn on that layer, like sprite assets or tile maps.</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the layer to target (or the layer name as a string)</Parameter>
			<Parameter Name="shader" Type="Asset.GMShader" Optional="false">The shader index to assign to the layer</Parameter>
		</Function>
		<Function Name="layer_vspeed" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>You can use this function to set the vertical speed (in pixels per game frame) of the layer within the currently scoped room. You supply the layer ID (which you get when you create the layer using layer_create()) or the layer name (as a string - this will have a performance impact) and the speed value to set, where a positive value is downwards and a negative value upwards.</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the layer to set the vertical speed of</Parameter>
			<Parameter Name="vspd" Type="Real" Optional="false">The vertical speed (in pixels per game frame) to set</Parameter>
		</Function>
		<Function Name="layer_x" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>You can use this function to set the x position of the layer within the currently scoped room. You supply the layer ID (which you get when you create the layer using layer_create()) or the layer name (as a string - this will have a performance impact) and the function will move the layer the given number of pixels along the horizontal axis of the room.</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the layer to set the x position of</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position in the room to set the layer to</Parameter>
		</Function>
		<Function Name="layer_y" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>You can use this function to set the y position of the layer within the currently scoped room. You supply the layer ID (which you get when you create the layer using layer_create()) or the layer name (as a string - this will have a performance impact) and the function will move the layer the given number of pixels along the vertical axis of the room.</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the layer to set the y position of</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position in the room to set the layer to</Parameter>
		</Function>
		<Function Name="layer_sequence_angle" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the angle of rotation for the given sequence element. You supply the sequence element ID as returned by layer_sequence_create() or by one of the layer element functions along with the new angle to set and the sequence will be rotated about its origin to the new position. Angles in GameMaker are calculated with 0º to the right, and go anti-clockwise - so 90º is up, 180º is left and 270º is down - and the default angle for a sequence would be 0º.</Description>
			<Parameter Name="sequence_element_id" Type="Id.SequenceElement" Optional="false">The unique ID value of the sequence element to target</Parameter>
			<Parameter Name="angle" Type="Real" Optional="false">The new angle to rotate the sequence element to</Parameter>
		</Function>
		<Function Name="layer_sequence_create" Deprecated="false" ReturnType="Id.SequenceElement" Pure="false">
			<Description>With this function you can create an instance of a sequence asset on the given layer. You supply the layer ID which can be a string of the layer name - as defined in the room editor - or the unique layer ID - as returned by the function layer_get_id(), as well as the X and Y position in the room to create the sequence at, and finally the ID of the sequence to create. The sequence ID is the name constant that you defined in the Asset Browser for the sequence. The function will return the unique ID of the sequence element, which can then be used in all further layer functions for sequences, or it can be used to retrieve the sequence instance struct using the function layer_sequence_get_instance().</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the instance layer to target</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position in the room to create the sequence at</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position in the room to create the sequence at</Parameter>
			<Parameter Name="sequence_id" Type="Asset.GMSequence" Optional="false">The sequence ID to create, as defined in the Asset Browser</Parameter>
		</Function>
		<Function Name="layer_sequence_destroy" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can destroy (remove from the room) a sequence element. You supply the sequence element ID as returned by layer_sequence_create() or by one of the layer element functions and the sequence will be destroyed.</Description>
			<Parameter Name="sequence_element_id" Type="Id.SequenceElement" Optional="false">The unique ID value of the sequence element to target</Parameter>
		</Function>
		<Function Name="layer_sequence_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check to see if a sequence element exists on the given layer. You supply the layer ID which can be a string of the layer name - as defined in the room editor - or the unique layer ID - as returned by the function layer_get_id(), as well the sequence element ID - as returned by layer_sequence_create() or by one of the layer element functions - and it will return true if the given element exists or false otherwise.</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID or name of the layer to check</Parameter>
			<Parameter Name="sequence_element_id" Type="Id.SequenceElement" Optional="false">The unique ID value of the sequence element to target</Parameter>
		</Function>
		<Function Name="layer_sequence_get_angle" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you supply the sequence element ID - as returned by layer_sequence_create() or by one of the layer element functions - and it will return the current angle of the sequence element in the game room. Note that angles are returned in degrees, and 0º is to the right, 90º is up, 180º is to the left and 270º is down.</Description>
			<Parameter Name="sequence_element_id" Type="Id.SequenceElement" Optional="false">The unique ID value of the sequence element to target</Parameter>
		</Function>
		<Function Name="layer_sequence_get_headdir" Deprecated="false" ReturnType="Constant.SequenceDirection" Pure="true">
			<Description>With this function you supply the sequence element ID - as returned by layer_sequence_create() or by one of the layer element functions - and it will return the current playhead direction, which will be one of the constants listed below.</Description>
			<Parameter Name="sequence_element_id" Type="Id.SequenceElement" Optional="false">The unique ID value of the sequence element to target</Parameter>
		</Function>
		<Function Name="layer_sequence_get_headpos" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you supply the sequence element ID - as returned by layer_sequence_create() or by one of the layer element functions - and it will return the current playhead position (the current frame the playhead is on).</Description>
			<Parameter Name="sequence_element_id" Type="Id.SequenceElement" Optional="false">The unique ID value of the sequence element to target</Parameter>
		</Function>
		<Function Name="layer_sequence_get_instance" Deprecated="false" ReturnType="Struct.SequenceInstance" Pure="true">
			<Description>With this function you supply the sequence element ID - as returned by layer_sequence_create() or by one of the layer element functions - and it will return the sequence instance struct. You can find out more about the format of the sequence instance struct on this page.</Description>
			<Parameter Name="sequence_element_id" Type="Id.SequenceElement" Optional="false">The unique ID value of the sequence element to target</Parameter>
		</Function>
		<Function Name="layer_sequence_get_length" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you supply the sequence element ID - as returned by layer_sequence_create() or by one of the layer element functions - and it will return the length of the sequence. This is the number of frames that the sequence will run for.</Description>
			<Parameter Name="sequence_element_id" Type="Id.SequenceElement" Optional="false">The unique ID value of the sequence element to target</Parameter>
		</Function>
		<Function Name="layer_sequence_get_sequence" Deprecated="false" ReturnType="Struct.Sequence" Pure="true">
			<Description>With this function you supply the sequence element ID - as returned by layer_sequence_create() or by one of the layer element functions - and it will return the sequence object struct. This function bypasses the need to first get the sequence instance struct and permits you to access the sequence data directly. You can find out more about the format of the sequence object struct on this page.</Description>
			<Parameter Name="sequence_element_id" Type="Id.SequenceElement" Optional="false">The unique ID value of the sequence element to target</Parameter>
		</Function>
		<Function Name="layer_sequence_get_speedscale" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you supply the sequence element ID - as returned by layer_sequence_create() or by one of the layer element functions - and it will return the current playback speed scale. This is the multiplier value used to slow down or speed up the playback speed. A value of 1 is the default value, and values lower than 1 mean that playback is slowed down and values greater than 1 mean that playback is sped up.</Description>
			<Parameter Name="sequence_element_id" Type="Id.SequenceElement" Optional="false">The unique ID value of the sequence element to target</Parameter>
		</Function>
		<Function Name="layer_sequence_get_x" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you supply the sequence element ID - as returned by layer_sequence_create() or by one of the layer element functions - and it will return the current X position in the game room for the sequence.</Description>
			<Parameter Name="sequence_element_id" Type="Id.SequenceElement" Optional="false">The unique ID value of the sequence element to target</Parameter>
		</Function>
		<Function Name="layer_sequence_get_xscale" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you supply the sequence element ID - as returned by layer_sequence_create() or by one of the layer element functions - and it will return the current scale along the X axis of the sequence element in the game room.</Description>
			<Parameter Name="sequence_element_id" Type="Id.SequenceElement" Optional="false">The unique ID value of the sequence element to target</Parameter>
		</Function>
		<Function Name="layer_sequence_get_y" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you supply the sequence element ID - as returned by layer_sequence_create() or by one of the layer element functions - and it will return the current Y position in the game room for the sequence.</Description>
			<Parameter Name="sequence_element_id" Type="Id.SequenceElement" Optional="false">The unique ID value of the sequence element to target</Parameter>
		</Function>
		<Function Name="layer_sequence_get_yscale" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you supply the sequence element ID - as returned by layer_sequence_create() or by one of the layer element functions - and it will return the current scale along the Y axis of the sequence element in the game room.</Description>
			<Parameter Name="sequence_element_id" Type="Id.SequenceElement" Optional="false">The unique ID value of the sequence element to target</Parameter>
		</Function>
		<Function Name="layer_sequence_headdir" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the direction for the given sequence playhead. You supply the sequence element ID as returned by layer_sequence_create() or by one of the layer element functions, and then give the playhead direction which should be one of the following constants:</Description>
			<Parameter Name="sequence_element_id" Type="Id.SequenceElement" Optional="false">The unique ID value of the sequence element to target</Parameter>
			<Parameter Name="direction" Type="Constant.SequenceDirection" Optional="false">The playhead direction, a constant, listed above</Parameter>
		</Function>
		<Function Name="layer_sequence_headpos" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the playhead position of a sequence element to a specific frame. You supply the sequence element ID as returned by layer_sequence_create() or by one of the layer element functions along with the new position to set. Note that the position is in frames and if you set a value greater than the total number of frames (or less than 0) then the actual final playhead position will depend on the type of sequence playback that has been selected, following these rules:</Description>
			<Parameter Name="sequence_element_id" Type="Id.SequenceElement" Optional="false">The unique ID value of the sequence element to target</Parameter>
			<Parameter Name="position" Type="Real" Optional="false">The position within the sequence (in frames) to set the playhead position to (can be a decimal value)</Parameter>
		</Function>
		<Function Name="layer_sequence_is_finished" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you supply the sequence element ID - as returned by layer_sequence_create() or by one of the layer element functions - and it will check if the sequence is finished playing or not, returning true if it is, and false if it is not. Note that this is only applicable when the sequence is not set to loop or ping-pong in the playback mode.</Description>
			<Parameter Name="sequence_element_id" Type="Id.SequenceElement" Optional="false">The unique ID value of the sequence element to target</Parameter>
		</Function>
		<Function Name="layer_sequence_is_paused" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you supply the sequence element ID - as returned by layer_sequence_create() or by one of the layer element functions - and it will check if the sequence is currently paused or not, returning true if it is paused, and false if it is not.</Description>
			<Parameter Name="sequence_element_id" Type="Id.SequenceElement" Optional="false">The unique ID value of the sequence element to target</Parameter>
		</Function>
		<Function Name="layer_sequence_pause" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can pause the playback of the given sequence. You supply the sequence element ID as returned by layer_sequence_create() or by one of the layer element functions and the function will pause the sequence until you begin playback again using the function layer_sequence_play().</Description>
			<Parameter Name="sequence_element_id" Type="Id.SequenceElement" Optional="false">The unique ID value of the sequence element to target</Parameter>
		</Function>
		<Function Name="layer_sequence_play" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can start the playback of the given sequence. You supply the sequence element ID as returned by layer_sequence_create() or by one of the layer element functions and the function will play the sequence, which you can then pause if required using the function layer_sequence_pause().</Description>
			<Parameter Name="sequence_element_id" Type="Id.SequenceElement" Optional="false">The unique ID value of the sequence element to target</Parameter>
		</Function>
		<Function Name="layer_sequence_speedscale" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can change the playback speed of the given sequence. You supply the sequence element ID as returned by layer_sequence_create() or by one of the layer element functions and then a speed scale value. This value is a multiplier, where 1 is the default playback speed and values less than 1 will slow the playback and values larger than 1 will speed it up, eg: a value of 0.5 would be half playback speed, while a value of 2 would be double playback speed.</Description>
			<Parameter Name="sequence_element_id" Type="Id.SequenceElement" Optional="false">The unique ID value of the sequence element to target</Parameter>
			<Parameter Name="speedscale" Type="Real" Optional="false">The speed scale to use (a multiplier), default is 1</Parameter>
		</Function>
		<Function Name="layer_sequence_x" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the position along the X (horizontal) axis of the room for the given sequence element. You supply the sequence element ID as returned by layer_sequence_create() or by one of the layer element functions along with the X position to set and the sequence will be moved to the new position.</Description>
			<Parameter Name="sequence_element_id" Type="Id.SequenceElement" Optional="false">The unique ID value of the sequence element to target</Parameter>
			<Parameter Name="pos_x" Type="Real" Optional="false">The X position to move the sequence element to</Parameter>
		</Function>
		<Function Name="layer_sequence_xscale" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the X scale for the given sequence element. You supply the sequence element ID as returned by layer_sequence_create() or by one of the layer element functions along with the new scale to set on the X axis and the sequence will be scaled by this amount. A scale of 1 indicates no scaling (1:1), smaller values will scale down (0.5, for example, will half the width of the sequence), larger values will scale up and negative values will mirror the sequence about its origin and scale it unless the value used is exactly -1 (in which case the sequence is just mirrored about its origin with no scaling).</Description>
			<Parameter Name="sequence_element_id" Type="Id.SequenceElement" Optional="false">The unique ID value of the sequence element to target</Parameter>
			<Parameter Name="xscale" Type="Real" Optional="false">The new X axis scale value to apply to the sequence element</Parameter>
		</Function>
		<Function Name="layer_sequence_y" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the position along the Y (vertical) axis of the room for the given sequence element. You supply the sequence element ID as returned by layer_sequence_create() or by one of the layer element functions along with the Y position to set and the sequence will be moved to the new position.</Description>
			<Parameter Name="sequence_element_id" Type="Id.SequenceElement" Optional="false">The unique ID value of the sequence element to target</Parameter>
			<Parameter Name="pos_y" Type="Real" Optional="false">The Y position to move the sequence element to</Parameter>
		</Function>
		<Function Name="layer_sequence_yscale" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the Y scale for the given sequence element. You supply the sequence element ID as returned by layer_sequence_create() or by one of the layer element functions along with the new scale to set on the Y axis and the sequence will be scaled by this amount. A scale of 1 indicates no scaling (1:1), smaller values will scale down (0.5, for example, will half the width of the sequence), larger values will scale up and negative values will flip the sequence about its origin and scale it unless the value used is exactly -1 (in which case the sequence is just flipped about its origin with no scaling).</Description>
			<Parameter Name="sequence_element_id" Type="Id.SequenceElement" Optional="false">The unique ID value of the sequence element to target</Parameter>
			<Parameter Name="yscale" Type="Real" Optional="false">The new Y axis scale value to apply to the sequence element</Parameter>
		</Function>
		<Function Name="layer_sprite_alpha" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function controls the alpha (transparency) of the sprite on the asset layer. You give the sprite element ID (which you get when you create a sprite element using layer_sprite_create() or when you use the function layer_sprite_get_id()), and then set the alpha value to use. Alpha can be between 0 (fully transparent) and 1 (fully opaque) with the default alpha value for the sprite element being 1. Note that if the layer the sprite element has been assigned to is not visible - or the element itself has been made invisible - you will not see any difference with this function until the layer or element has been made visible again.</Description>
			<Parameter Name="sprite_element_id" Type="Id.SpriteElement" Optional="false">The unique ID value of the sprite element to change</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha for sprite sprite, from 0 to 1 (default is 1)</Parameter>
		</Function>
		<Function Name="layer_sprite_angle" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Using this function you can change the angle for the given sprite element on a layer. You give the sprite element ID (which you get when you create a sprite element using layer_sprite_create() or when you use the function layer_sprite_get_id()), and then set the angle value, from 0 to 359 anti-clockwise, where 0 is to the right, 90 is to the top, 180 is to the left and 270 is to the bottom. If you set a value greater than 360 this will be looped to bring it within the 0 - 359 range.</Description>
			<Parameter Name="sprite_element_id" Type="Id.SpriteElement" Optional="false">The unique ID value of the sprite element to change</Parameter>
			<Parameter Name="angle" Type="Real" Optional="false">The angle of the sprite (default is 0)</Parameter>
		</Function>
		<Function Name="layer_sprite_blend" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function controls the blending (or &quot;tinting&quot;) of the sprite sprite and the default value is -1 (which represents the constant c_white, which can also be used). Any other value (including internal colour constants like c_red, or c_aqua) will blend the specified colour with the original sprite. You give the sprite element ID (which you get when you create a sprite element using layer_sprite_create() or when you use the function layer_sprite_get_id()), and then set the blending colour to use. Below you can see an example of a sprite that has been blended with different colours:</Description>
			<Parameter Name="sprite_element_id" Type="Id.SpriteElement" Optional="false">The unique ID value of the sprite element to change</Parameter>
			<Parameter Name="blend" Type="Constant.Color" Optional="false">The colour to blend with the sprite sprite (default is c_white)</Parameter>
		</Function>
		<Function Name="layer_sprite_change" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Using this function you can change the sprite resource assigned to a given sprite element on a layer. You give the sprite element ID (which you get when you create a sprite element using layer_sprite_create() or when you use the function layer_sprite_get_id()), and then supply a sprite index element asset will be changed. Note that if the sprite has sub-images then it will animate too (this can be controlled using the layer_sprite_index() and layer_sprite_speed() functions). Note that you can assign a value of -1 as the new sprite index and no sprite will be shown, although the element will still exist and can still be changed again later.</Description>
			<Parameter Name="sprite_element_id" Type="Id.SpriteElement" Optional="false">The unique ID value of the sprite element to change</Parameter>
			<Parameter Name="sprite_index" Type="Asset.GMSprite" Optional="false">The new sprite index to use</Parameter>
		</Function>
		<Function Name="layer_sprite_create" Deprecated="false" ReturnType="Id.SpriteElement" Pure="true">
			<Description>With this function you can assign a sprite resource to a layer to be used in your project. You supply the layer ID (which you get when you create the layer using layer_create() or when you use the layer name along with layer_get_id()), a position within the room, and a sprite index (which would be the name of the sprite as shown in the Asset Browser), and it will be added to the layer. The function returns the unique ID value for the element, which can then be used in further layer functions for sprites.</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the layer to target</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position to use</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position to use</Parameter>
			<Parameter Name="sprite" Type="Asset.GMSprite" Optional="false">The sprite index to be used</Parameter>
		</Function>
		<Function Name="layer_sprite_destroy" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will destroy the given sprite element. You supply the sprite ID (which you get when you create the sprite using layer_sprite_create() or when you use the layer ID along with layer_get_sprite_id()) and this will remove it. Note that this does not remove the layer, only the sprite from it, and if the sprite is one that has been added in the room editor, then the next time you leave the room and then return, the sprite will be recreated again. However if the room is persistent, the sprite will be removed unless room persistence is switched off again.</Description>
			<Parameter Name="sprite_element_id" Type="Id.SpriteElement" Optional="false">The unique ID value of the sprite to be destroyed</Parameter>
		</Function>
		<Function Name="layer_sprite_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>You can use this function to check and see if a sprite element exists on any given layer. You supply the layer ID (which you get when you create the layer using layer_create()) or the layer name (as a string - this will have a performance impact) and the sprite element ID (which you get when you create a sprite element using layer_sprite_create() or when you use the function layer_sprite_get_id()) and the function will return either true if the element exists, or false if it does not.</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the layer to target (or the layer name as a string)</Parameter>
			<Parameter Name="sprite_element_id" Type="Id.SpriteElement" Optional="false">The unique ID value of the sprite element to check</Parameter>
		</Function>
		<Function Name="layer_sprite_get_alpha" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to get the alpha value of the sprite element. You give the sprite element ID (which you get when you create a sprite element using layer_sprite_create() or when you use the function layer_sprite_get_id()), and the function will return a value between 0 (fully transparent) and 1 (fully opaque).</Description>
			<Parameter Name="sprite_element_id" Type="Id.SpriteElement" Optional="false">The unique ID value of the sprite element to get the information from</Parameter>
		</Function>
		<Function Name="layer_sprite_get_angle" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to get the current angle for the sprite element. You give the sprite element ID (which you get when you create a sprite element using layer_sprite_create() or when you use the function layer_sprite_get_id()), and the function will return real value for the angle. This value will be between 0 and 360, where 0 represents right, 90 up, 180 left and 270 down.</Description>
			<Parameter Name="sprite_element_id" Type="Id.SpriteElement" Optional="false">The unique ID value of the sprite element to get the information from</Parameter>
		</Function>
		<Function Name="layer_sprite_get_blend" Deprecated="false" ReturnType="Constant.Color" Pure="true">
			<Description>This function can be used to get the blend colour of the sprite element. You give the sprite element ID (which you get when you create a sprite element using layer_sprite_create() or when you use the function layer_sprite_get_id()), and the function will return real value that represents the colour assigned.</Description>
			<Parameter Name="sprite_element_id" Type="Id.SpriteElement" Optional="false">The unique ID value of the sprite element to get the information from</Parameter>
		</Function>
		<Function Name="layer_sprite_get_id" Deprecated="false" ReturnType="Id.SpriteElement" Pure="true">
			<Description>This function can be used to retrieve the unique ID value of a sprite element on a layer. You supply the layer ID (which you get when you create the layer using layer_create() or when you use the layer name along with layer_get_id()) and the name of the sprite element as defined in the Room Editor. The function will return the ID value associated with that sprite element on the layer.</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the layer to target</Parameter>
			<Parameter Name="sprite_element_name" Type="String" Optional="false">The unique name of the sprite element on the layer as defined in the Room Editor</Parameter>
		</Function>
		<Function Name="layer_sprite_get_index" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to get the current image index value of the sprite element. You give the sprite element ID (which you get when you create a sprite element using layer_sprite_create() or when you use the function layer_sprite_get_id()), and the function will return real value that represents the image index being shown for the sprite. The function will return -1 if either the sprite element doesn&apos;t exist or the element doesn&apos;t have a valid sprite assigned to it.</Description>
			<Parameter Name="sprite_element_id" Type="Id.SpriteElement" Optional="false">The unique ID value of the sprite element to get the information from</Parameter>
		</Function>
		<Function Name="layer_sprite_get_speed" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to get the current speed multiplier value of the sprite element. You give the sprite element ID (which you get when you create a sprite element using layer_sprite_create() or when you use the function layer_sprite_get_id()), and the function will return real value that represents the speed multiplier being used to animate the sprite. Default value is 1.</Description>
			<Parameter Name="sprite_element_id" Type="Id.SpriteElement" Optional="false">The unique ID value of the sprite element to get the information from</Parameter>
		</Function>
		<Function Name="layer_sprite_get_sprite" Deprecated="false" ReturnType="Asset.GMSprite" Pure="true">
			<Description>This function can be used to get the current sprite index of the sprite element. You give the sprite element ID (which you get when you create a sprite element using layer_sprite_create() or when you use the function layer_sprite_get_id()), and the function will return a real value that represents the sprite index being shown. If the element has no sprite assigned, the function will return -1.</Description>
			<Parameter Name="sprite_element_id" Type="Id.SpriteElement" Optional="false">The unique ID value of the sprite element to get the information from</Parameter>
		</Function>
		<Function Name="layer_sprite_get_x" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to get the x position of the sprite element in the room. You give the sprite element ID (which you get when you create a sprite element using layer_sprite_create() or when you use the function layer_sprite_get_id()), and the function will return the x position value.</Description>
			<Parameter Name="sprite_element_id" Type="Id.SpriteElement" Optional="false">The unique ID value of the sprite element to get the information from</Parameter>
		</Function>
		<Function Name="layer_sprite_get_xscale" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to get the current scale multiplier along the x axis for the sprite element. You give the sprite element ID (which you get when you create a sprite element using layer_sprite_create() or when you use the function layer_sprite_get_id()), and the function will return real value for the x scale, where 1 is no scaling.</Description>
			<Parameter Name="sprite_element_id" Type="Id.SpriteElement" Optional="false">The unique ID value of the sprite element to get the information from</Parameter>
		</Function>
		<Function Name="layer_sprite_get_y" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to get the y position of the sprite element in the room. You give the sprite element ID (which you get when you create a sprite element using layer_sprite_create() or when you use the function layer_sprite_get_id()), and the function will return the y position value.</Description>
			<Parameter Name="sprite_element_id" Type="Id.SpriteElement" Optional="false">The unique ID value of the sprite element to get the information from</Parameter>
		</Function>
		<Function Name="layer_sprite_get_yscale" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to get the current scale multiplier along the y axis for the sprite element. You give the sprite element ID (which you get when you create a sprite element using layer_sprite_create() or when you use the function layer_sprite_get_id()), and the function will return real value for the y scale, where 1 is no scaling.</Description>
			<Parameter Name="sprite_element_id" Type="Id.SpriteElement" Optional="false">The unique ID value of the sprite element to get the information from</Parameter>
		</Function>
		<Function Name="layer_sprite_index" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set the image index of a sprite asset which has multiple sub-images on a layer. You give the sprite element ID (which you get when you create a sprite element using layer_sprite_create() or when you use the function layer_sprite_get_id()), and then set the image index to use. If you set a value outside of the range of sub-images, then the image index will loop around.</Description>
			<Parameter Name="sprite_element_id" Type="Id.SpriteElement" Optional="false">The unique ID value of the sprite element to set</Parameter>
			<Parameter Name="index" Type="Real" Optional="false">The image index to use for the sprite</Parameter>
		</Function>
		<Function Name="layer_sprite_speed" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set the speed of an animating image that has been assigned to a sprite element. You give the sprite element ID (which you get when you create a sprite element using layer_sprite_create() or when you use the function layer_sprite_get_id()), and then set the animation speed. If the IDE has set the animation speed for the sprite used to be calculated as Frames Per Game Frame, then the speed value given is a multiplier, with 1 being the default value, and setting it to 0.5 will half the animation speed, while setting it to 1.5 will double it. However, if the IDE has set the animation speed for the sprite used to be calculated as Frames Per Second, then the speed value given is a literal frames per second value, so setting this to 5, for example, will set the animation to loop 5 frames every second that the game runs. If the sprite used has no sub-images, this function will have no effect.</Description>
			<Parameter Name="sprite_element_id" Type="Id.SpriteElement" Optional="false">The unique ID value of the sprite element to change</Parameter>
			<Parameter Name="speed" Type="Real" Optional="false">The speed multiplier/value to use for the element</Parameter>
		</Function>
		<Function Name="layer_sprite_x" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function controls the position along the x-axis of the room of the asset sprite element on the layer. You give the sprite element ID (which you get when you create a sprite element using layer_sprite_create() or when you use the function layer_sprite_get_id()), and then set the x value to use (based on the room coordinates).</Description>
			<Parameter Name="sprite_element_id" Type="Id.SpriteElement" Optional="false">The unique ID value of the sprite element to change</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position for the sprite</Parameter>
		</Function>
		<Function Name="layer_sprite_xscale" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Using this function you can change whether the given sprite element on a layer should be scaled along the x axis or not. You give the sprite element ID (which you get when you create a sprite element using layer_sprite_create() or when you use the function layer_sprite_get_id()), and then set the scale value. A scale of 1 indicates no scaling (1:1), smaller values will scale down (0.5, for example, will half the width of the sprite used), larger values will scale up, and negative values will flip the sprite and scale it unless the value used is exactly -1 (in which case the sprite used is just flipped right-to-left about its origin position with no scaling).</Description>
			<Parameter Name="sprite_element_id" Type="Id.SpriteElement" Optional="false">The unique ID value of the sprite element to change</Parameter>
			<Parameter Name="xscale" Type="Real" Optional="false">The xscale value (default is 1)</Parameter>
		</Function>
		<Function Name="layer_sprite_y" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function controls the position along the y-axis of the room of the asset sprite element on the layer. You give the sprite element ID (which you get when you create a sprite element using layer_sprite_create() or when you use the function layer_sprite_get_id()), and then set the y value to use (based on the room coordinates).</Description>
			<Parameter Name="sprite_element_id" Type="Id.SpriteElement" Optional="false">The unique ID value of the sprite element to change</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position for the sprite</Parameter>
		</Function>
		<Function Name="layer_sprite_yscale" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Using this function you can change whether the given sprite element on a layer should be scaled along the y axis or not. You give the sprite element ID (which you get when you create a sprite element using layer_sprite_create() or when you use the function layer_sprite_get_id()), and then set the scale value. A scale of 1 indicates no scaling (1:1), smaller values will scale down (0.5, for example, will half the height of the sprite used), larger values will scale up, and negative values will mirror the sprite and scale it unless the value used is exactly -1 (in which case the sprite used is just mirrored top-to-bottom about its (0, 0) position with no scaling).</Description>
			<Parameter Name="sprite_element_id" Type="Id.SpriteElement" Optional="false">The unique ID value of the sprite element to change</Parameter>
			<Parameter Name="yscale" Type="Real" Optional="false">The yscale value (default is 1)</Parameter>
		</Function>
		<Function Name="layer_tilemap_create" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can assign a tile-set resource to a layer to be used as a tile map in your project. You supply the layer ID (which you get when you create the layer using layer_create()) or the layer name (as a string - this will have a performance impact) and then an initial (x, y) position to add the tile map to the room, the tile set resource to use, and then the width and height of the tile map in cells (ie: a width of 20 and a height of 10 will create a tile map with 200 cells that is 20 cells wide and 10 cells tall), with the size of the cells themselves being defined by the tile set chosen. It is worth noting that you cannot place tiles at negative positions within the tile map, so all tiles must be placed within the cell spaces 0 to width - 1, 0 to height - 1.</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the layer to target (or the layer name as a string)</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position of the tile map in the room</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position of the tile map in the room</Parameter>
			<Parameter Name="tile set" Type="Asset.GMTileSet" Optional="false">The tile set index to be used</Parameter>
			<Parameter Name="width" Type="Real" Optional="false">The width tile map (in cells)</Parameter>
			<Parameter Name="height" Type="Real" Optional="false">The height of the tile map (in cells)</Parameter>
		</Function>
		<Function Name="layer_tilemap_destroy" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will destroy the given tile map element. You supply the tile map ID (which you get when you create the tile map using layer_tilemap_create() or when you use the layer ID along with layer_get_tilemap_id()) and this will remove it. Note that this does not remove the layer, only the tile map from it, and if the tile map is one that has been added in the room editor, then the next time you leave the room and then return, the tile map will be recreated again. However if the room is persistent, the tile map will be removed unless room persistence is switched off again.</Description>
			<Parameter Name="tilemap_element_id" Type="Id.TileMapElement" Optional="false">The unique ID value of the tile map to be destroyed</Parameter>
		</Function>
		<Function Name="layer_tilemap_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>You can use this function to check and see if a tile map element exists on any given layer. You supply the layer ID (which you get when you create the layer using layer_create()) or the layer name (as a string - this will have a performance impact) and the tile map element ID (which you get when you create a tile map element using layer_tilemap_create() or when you use the function layer_tilemap_get_id()) and the function will return either true if the element exists, or false if it does not.</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the layer to target (or the layer name as a string)</Parameter>
			<Parameter Name="tilemap_element_id" Type="Id.TileMapElement" Optional="false">The unique ID value of the tile map element to check</Parameter>
		</Function>
		<Function Name="layer_tilemap_get_id" Deprecated="false" ReturnType="Id.TileMapElement" Pure="true">
			<Description>This function can be used to retrieve the unique ID value of the tile map element on a layer. You supply the layer ID (which you get when you create the layer using layer_create()) or the layer name (as a string - this will have a performance impact) and the function will return the ID value associated with the tile map element on the layer. Note that this function is specifically designed for use with tile maps that have been added in the IDE, as if you add a tile map to a layer through code using the function layer_tilemap_create(), then it will return the unique ID for the tile map element added. If the given tilemap ID is incorrect or the tilemap doesn&apos;t exist, the function will return -1.</Description>
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false">The unique ID value of the layer to target (or the layer name as a string)</Parameter>
		</Function>
		<Function Name="tilemap_clear" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Using this function you can clear/set all the tiles on a given tile-map. You give the tile map element ID (which you get when you create a tile map element using layer_tilemap_create() or when you use the function layer_tilemap_get_id()), and then supply the tile data that you wish to clear the layer with. A default value of 0 will clear all the tiles from the layer (essentially making all tiles &quot;empty&quot;), while you can use the dedicated tile_* functions to create your own tile data to clear the tile map with.</Description>
			<Parameter Name="tilemap_element_id" Type="Id.TileMapElement" Optional="false">The unique ID value of the tile map element to change</Parameter>
			<Parameter Name="tiledata" Type="Constant.TileMask" Optional="false">The tile data to use to clear the layer</Parameter>
		</Function>
		<Function Name="tilemap_get" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Using this function you can retrieve the tile data from a cell of the tile map element. You give the tile map element ID (which you get when you create a tile map element using layer_tilemap_create() or when you use the function layer_tilemap_get_id()), as well as the cell x and y position and the function will return the tile data &quot;blob&quot;. This data is essentially a bit mask that contains the tile index, the flip/rotate/mirror booleans and any mask data that has been applied (see tilemap_set_mask() for details), and the resulting data value can then be used in the tile_* functions to change a tiles properties. Note that we are using x/y cell positions based on the size of the tile map grid and not as a position in the room, so &quot;cell_x&quot; is a value from 0 to tile map width, and &quot;cell_y&quot; is a value from 0 to tile map height. If you need to get the data for a tile at a specific room position then you need to use the function tilemap_get_at_pixel().</Description>
			<Parameter Name="tilemap_element_id" Type="Id.TileMapElement" Optional="false">The unique ID value of the tile map element to get the tile-data of</Parameter>
			<Parameter Name="x_cell" Type="Real" Optional="false">The cell along the x-axis to get the tile data from</Parameter>
			<Parameter Name="y_cell" Type="Real" Optional="false">The cell along the y-axis to get the tile data from</Parameter>
		</Function>
		<Function Name="tilemap_get_at_pixel" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Using this function you can retrieve the tile data from a position (within the room) of the tile map element. You give the tile map element ID (which you get when you create a tile map element using layer_tilemap_create() or when you use the function layer_tilemap_get_id()) as well as the x and y position in the room to get the tile data from and the function will return the tile data &quot;blob&quot;. This data is essentially a bit mask that contains the tile index, the flip/rotate/mirror booleans and any mask data that has been applied (see tilemap_set_mask() for details), and the resulting data value can then be used in the tile_* functions to change a tiles properties. If you need to get the tile data from a specific tile cell you should be using the function tilemap_get() instead.</Description>
			<Parameter Name="tilemap_element_id" Type="Id.TileMapElement" Optional="false">The unique ID value of the tile map element to get the tile-data of</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The position along the x-axis to get the tile data from (in room pixels)</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The position along the y-axis to get the tile data from (in room pixels)</Parameter>
		</Function>
		<Function Name="tilemap_get_cell_x_at_pixel" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Using this function you can retrieve the x-axis position of an individual tile map cell by giving the relative x-axis position within the room. You give the tile map element ID (which you get when you create a tile map element using layer_tilemap_create() or when you use the function layer_tilemap_get_id()), as well as the x and y position within the room and the function will return the x position of the cell within the tile map for that point. Note that if the value is outside of the tile map area, and no cell is available, it will return -1.</Description>
			<Parameter Name="tilemap_element_id" Type="Id.TileMapElement" Optional="false">The unique ID value of the tile map element to get the cell x position of</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position within the room to use for getting the cell</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position within the room to use for getting the cell</Parameter>
		</Function>
		<Function Name="tilemap_get_cell_y_at_pixel" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Using this function you can retrieve the y-axis position of an individual tile map cell by giving the relative y-axis position within the room. You give the tile map element ID (which you get when you create a tile map element using layer_tilemap_create() or when you use the function layer_tilemap_get_id()), as well as the x and y position within the room and the function will return the y position of the cell within the tile map for that point. Note that if the value is outside of the tile map area, and no cell is available, it will return -1.</Description>
			<Parameter Name="tilemap_element_id" Type="Id.TileMapElement" Optional="false">The unique ID value of the tile map element to get the cell y position of</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position within the room to use for getting the cell</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position within the room to use for getting the cell</Parameter>
		</Function>
		<Function Name="tilemap_get_frame" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Since tiles can be animated, it can sometimes be useful to know which frame is currently being drawn and react accordingly, so with this function you can retrieve the current frame index for a given tile map. You give the tile map element ID (which you get when you create a tile map element using layer_tilemap_create() or when you use the function layer_tilemap_get_id()), and the function will return the frame index.</Description>
			<Parameter Name="tilemap_element_id" Type="Id.TileMapElement" Optional="false">The unique ID value of the tile map element to get the frame index of</Parameter>
		</Function>
		<Function Name="tilemap_get_global_mask" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to retrieve the bit mask value for all tile maps, returning the current mask value or -1 if there is an error or 0 if no mask is specified. For further information on global tile map bit masks, see the function tilemap_set_global_mask().</Description>
		</Function>
		<Function Name="tilemap_get_height" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Using this function you can retrieve the height (in cells) of the tile map element. You give the tile map element ID (which you get when you create a tile map element using layer_tilemap_create() or when you use the function layer_tilemap_get_id()), and the function will return the height (number of cells wide).</Description>
			<Parameter Name="tilemap_element_id" Type="Id.TileMapElement" Optional="false">The unique ID value of the tile map element to get the height of</Parameter>
		</Function>
		<Function Name="tilemap_get_mask" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to retrieve the bit mask value for the given tile map. You give the tile map element ID (which you get when you create a tile map element using layer_tilemap_create() or when you use the function layer_tilemap_get_id()), and the function will return the current mask value or -1 if there is an error or 0 if no mask is specified. For further information on tile map bit masks, see the function tilemap_set_mask().</Description>
			<Parameter Name="tilemap_element_id" Type="Id.TileMapElement" Optional="false">The unique ID value of the tile map element to get the mask of</Parameter>
		</Function>
		<Function Name="tilemap_get_tileset" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Using this function you can retrieve the index value of the tile set resource assigned to a given tile map element on a layer. You give the tile map element ID (which you get when you create a tile map element using layer_tilemap_create() or when you use the function layer_tilemap_get_id()), and the function will return the tile set index value.</Description>
			<Parameter Name="tilemap_element_id" Type="Id.TileMapElement" Optional="false">The unique ID value of the tile map element to get the tile set from</Parameter>
		</Function>
		<Function Name="tilemap_get_tile_height" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Using this function you can retrieve the height (in pixels) of each tile cell of the tile map element. You give the tile map element ID (which you get when you create a tile map element using layer_tilemap_create() or when you use the function layer_tilemap_get_id()), and the function will return the tile set cell height.</Description>
			<Parameter Name="tilemap_element_id" Type="Id.TileMapElement" Optional="false">The unique ID value of the tile map element to get the tile cell height of</Parameter>
		</Function>
		<Function Name="tilemap_get_tile_width" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Using this function you can retrieve the width (in pixels) of each tile cell of the tile map element. You give the tile map element ID (which you get when you create a tile map element using layer_tilemap_create() or when you use the function layer_tilemap_get_id()), and the function will return the tile set cell width.</Description>
			<Parameter Name="tilemap_element_id" Type="Id.TileMapElement" Optional="false">The unique ID value of the tile map element to get the tile cell width of</Parameter>
		</Function>
		<Function Name="tilemap_get_width" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Using this function you can retrieve the width (in cells) of the tile map element. You give the tile map element ID (which you get when you create a tile map element using layer_tilemap_create() or when you use the function layer_tilemap_get_id()), and the function will return the width (number of cells wide).</Description>
			<Parameter Name="tilemap_element_id" Type="Id.TileMapElement" Optional="false">The unique ID value of the tile map element to get the width of</Parameter>
		</Function>
		<Function Name="tilemap_get_x" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Using this function you can retrieve the x position (within the room) of the tile map element. You give the tile map element ID (which you get when you create a tile map element using layer_tilemap_create() or when you use the function layer_tilemap_get_id()), and the function will return the x-axis position.</Description>
			<Parameter Name="tilemap_element_id" Type="Id.TileMapElement" Optional="false">The unique ID value of the tile map element to get the x position of</Parameter>
		</Function>
		<Function Name="tilemap_get_y" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Using this function you can retrieve the y position (within the room) of the tile map element. You give the tile map element ID (which you get when you create a tile map element using layer_tilemap_create() or when you use the function layer_tilemap_get_id()), and the function will return the y-axis position.</Description>
			<Parameter Name="tilemap_element_id" Type="Id.TileMapElement" Optional="false">The unique ID value of the tile map element to get the y position of</Parameter>
		</Function>
		<Function Name="tilemap_set" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>This function can be used to set any cell (grid square) within the tile map element on the layer to a new tile. You give the tile map element ID (which you get when you create a tile map element using layer_tilemap_create() or when you use the function layer_tilemap_get_id()), and then the tile data to set as well as the position within the tile map. You can retrieve tile data using the function tilemap_get() and then use the tile_ functions to change it before setting the cell using this function. The function will return true if the tile was successfully set and false if there was an issue and it wasn&apos;t set.</Description>
			<Parameter Name="tilemap_element_id" Type="Id.TileMapElement" Optional="false">The unique ID value of the tile map element to change</Parameter>
			<Parameter Name="tiledata" Type="Constant.TileMask" Optional="false">The tile data to set</Parameter>
			<Parameter Name="xcell" Type="Real" Optional="false">The cell (grid) position to set along the x-axis</Parameter>
			<Parameter Name="ycell" Type="Real" Optional="false">The cell (grid) position to set along the y-axis</Parameter>
		</Function>
		<Function Name="tilemap_set_at_pixel" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>This function can be used to set a cell within the tile map element on the layer to a new tile using the actual position of the tile to change within the room. You give the tile map element ID (which you get when you create a tile map element using layer_tilemap_create() or when you use the function layer_tilemap_get_id()), and then the tile data to set as well as the position within the room. You can retrieve tile data using the function tilemap_get_at_pixel() and then use the tile_ functions to change it before setting it again using this function. The function will return true if the tile was successfully set and false if there was an issue and it wasn&apos;t set.</Description>
			<Parameter Name="tilemap_element_id" Type="Id.TileMapElement" Optional="false">The unique ID value of the tile map element to change</Parameter>
			<Parameter Name="tiledata" Type="Constant.TileMask" Optional="false">The tile set data to set</Parameter>
			<Parameter Name="xcell" Type="Real" Optional="false">The x position (in the room)</Parameter>
			<Parameter Name="ycell" Type="Real" Optional="false">The y position (in the room)</Parameter>
		</Function>
		<Function Name="tilemap_set_global_mask" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set the tile bit mask for a all tile maps in the game. The idea is that if you have, for example, pretty small tile sets of 16 x 16 tiles will have a total of 256 different tiles in each tile set, which only uses up 8 bits of your index in the tile data &quot;blob&quot; (from an available 19 bits of data). These bits can be &quot;masked&quot; and then the rest of the tile data can be used to store additional values.</Description>
			<Parameter Name="mask" Type="Constant.TileMask" Optional="false">The mask value to use</Parameter>
		</Function>
		<Function Name="tilemap_set_height" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to resize a tile map element. You give the tile map element ID (which you get when you create a tile map element using layer_tilemap_create() or when you use the function layer_tilemap_get_id()), and the new height of the tile map in tile cells.</Description>
			<Parameter Name="tilemap_element_id" Type="Id.TileMapElement" Optional="false">The unique ID value of the tile map element to set the height of</Parameter>
			<Parameter Name="height" Type="Real" Optional="false">The height value (in &quot;cells&quot;)</Parameter>
		</Function>
		<Function Name="tilemap_set_mask" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set the tile bit mask for a single tile map. You give the tile map element ID (which you get when you create a tile map element using layer_tilemap_create() or when you use the function layer_tilemap_get_id()), and then the mask value. The idea is that if you have, for example, a pretty small tile set of 16 x 16 tiles then you have a total of 256 different tiles in your tile set, which only uses up 8 bits of your index in the tile data &quot;blob&quot; (from an available 19 bits of data). These bits can be &quot;masked&quot; and then the rest of the tile data can be used to store additional values.</Description>
			<Parameter Name="tilemap_element_id" Type="Id.TileMapElement" Optional="false">The unique ID value of the tile map element to set the mask of</Parameter>
			<Parameter Name="mask" Type="Constant.TileMask" Optional="false">The mask value</Parameter>
		</Function>
		<Function Name="tilemap_set_width" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to resize a tile map element. You give the tile map element ID (which you get when you create a tile map element using layer_tilemap_create() or when you use the function layer_tilemap_get_id()), and the new width of the tile map in tile cells.</Description>
			<Parameter Name="tilemap_element_id" Type="Id.TileMapElement" Optional="false">The unique ID value of the tile map element to set the width of</Parameter>
			<Parameter Name="width" Type="Real" Optional="false">The width value (in &quot;cells&quot;)</Parameter>
		</Function>
		<Function Name="tilemap_tileset" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Using this function you can change the tile set resource assigned to a given tile map element on a layer. You give the tile map element ID (which you get when you create a tile map element using layer_tilemap_create() or when you use the function layer_tilemap_get_id()), and then supply a tile set index and the tile map will be given the new sprite.</Description>
			<Parameter Name="tilemap_element_id" Type="Id.TileMapElement" Optional="false">The unique ID value of the tile map element to change</Parameter>
			<Parameter Name="tileset_index" Type="Asset.GMTileSet" Optional="false">The new tile set index to use</Parameter>
		</Function>
		<Function Name="tilemap_x" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function controls the position along the x-axis of the room of the asset tile map element on the layer. You give the tile map element ID (which you get when you create a tile map element using layer_tilemap_create() or when you use the function layer_tilemap_get_id()), and then set the x value to use (based on the room coordinates).</Description>
			<Parameter Name="tilemap_element_id" Type="Id.TileMapElement" Optional="false">The unique ID value of the tile map element to change</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position for the tile map</Parameter>
		</Function>
		<Function Name="tilemap_y" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function controls the position along the y-axis of the room of the asset tile map element on the layer. You give the tile map element ID (which you get when you create a tile map element using layer_tilemap_create() or when you use the function layer_tilemap_get_id()), and then set the y value to use (based on the room coordinates).</Description>
			<Parameter Name="tilemap_element_id" Type="Id.TileMapElement" Optional="false">The unique ID value of the tile map element to change</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position for the tile map</Parameter>
		</Function>
		<Function Name="tile_get_empty" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function can be used to check whether a given set of tile-data is for an empty tile or not. You give the tile-data, which can be retrieved using the function tilemap_get(), and the function will return true if the tile is empty, or false if there is a tile index.</Description>
			<Parameter Name="tiledata" Type="Real" Optional="false">the tile-data to check</Parameter>
		</Function>
		<Function Name="tile_get_flip" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function can be used to check whether in a given set of tile-data the tile has been flipped or not. You give the tile-data, which can be retrieved using the function tilemap_get(), and the function will return true if the tile is flipped, or false if not.</Description>
			<Parameter Name="tiledata" Type="Real" Optional="false">the tile-data to check</Parameter>
		</Function>
		<Function Name="tile_get_index" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to get the tile index (the position of the tile within the tile set image) from a set of tile-data. You give the tile-data, which can be retrieved using the function tilemap_get(), and the function will return an integer value for the index or -1 if there is an error.</Description>
			<Parameter Name="tiledata" Type="Real" Optional="false">the tile-data to check</Parameter>
		</Function>
		<Function Name="tile_get_mirror" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function can be used to check whether in a given set of tile-data the tile has been mirrored or not. You give the tile-data, which can be retrieved using the function tilemap_get(), and the function will return true if the tile is mirrored, or false if not.</Description>
			<Parameter Name="tiledata" Type="Real" Optional="false">the tile-data to check</Parameter>
		</Function>
		<Function Name="tile_get_rotate" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function can be used to check whether in a given set of tile-data the tile has been rotated 90 degrees or not. You give the tile-data, which can be retrieved using the function tilemap_get(), and the function will return true if the tile is rotated, or false if not.</Description>
			<Parameter Name="tiledata" Type="Real" Optional="false">the tile-data to check</Parameter>
		</Function>
		<Function Name="tile_set_empty" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>This function can be used to set a given set of tile-data to be an empty tile. You give the tile-data, which can be retrieved using the function tilemap_get(), and the function will return true if the tile is empty, or false if there is a tile index. The function will return a modified tile-data set which can then be applied using the tilemap_set() function.</Description>
			<Parameter Name="tiledata" Type="Real" Optional="false">the tile-data to set</Parameter>
		</Function>
		<Function Name="tile_set_flip" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>This function can be used to set a given set of tile-data to flip the tile or not. You give the tile-data, which can be retrieved using the function tilemap_get(), and then set the flip argument to either true if you want the tile flipped, or false if you want the tile to be in its default, un-flipped state. The function will return a modified tile-data set which can then be applied using the tilemap_set() function.</Description>
			<Parameter Name="tiledata" Type="Real" Optional="false">the tile-data to set</Parameter>
			<Parameter Name="flip" Type="Bool" Optional="false">Set to true to flip and false to leave it as-is</Parameter>
		</Function>
		<Function Name="tile_set_index" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>This function can be used to set the tile index (the position of the tile within the tile set image) for a set of tile-data. You give the tile-data, which can be retrieved using the function tilemap_get(), and then the integer value that represents the position of the tile (its index) within the tile set. The function will return a modified tile-data set which can then be applied using the tilemap_set() function.</Description>
			<Parameter Name="tiledata" Type="Real" Optional="false">the tile-data to set</Parameter>
			<Parameter Name="index" Type="Real" Optional="false">The integer index value of the tile set to use</Parameter>
		</Function>
		<Function Name="tile_set_mirror" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>This function can be used to set a given set of tile-data to mirror the tile or not. You give the tile-data, which can be retrieved using the function tilemap_get(), and then set the mirror argument to either true if you want the tile mirrored, or false if you want the tile to be in its default, un-mirrored state. The function will return a modified tile-data set which can then be applied using the tilemap_set() function.</Description>
			<Parameter Name="tiledata" Type="Real" Optional="false">the tile-data to set</Parameter>
			<Parameter Name="mirror" Type="Bool" Optional="false">Set to true to mirror and false to leave it as-is</Parameter>
		</Function>
		<Function Name="tile_set_rotate" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>This function can be used to set a given set of tile-data to rotate the tile 90 degrees or not. You give the tile-data, which can be retrieved using the function tilemap_get(), and then set the rotate argument to either true if you want the tile rotated, or false if you want the tile to be in its default, un-rotated state. The function will return a modified tile-data set which can then be applied using the tilemap_set() function.</Description>
			<Parameter Name="tiledata" Type="Real" Optional="false">the tile-data to set</Parameter>
			<Parameter Name="rotate" Type="Bool" Optional="false">Set to true to rotate and false to leave it as-is</Parameter>
		</Function>
		<Function Name="script_execute" Deprecated="false" ReturnType="Any" Pure="false">
			<Description>This function was originally designed for calling script assets in a dynamic way, but with the introduction of user-defined functions it can now be used in two ways:</Description>
			<Parameter Name="scr" Type="String,Function,Asset.GMScript" Optional="false">The name of the function/script that you want to call</Parameter>
			<Parameter Name="..." Type="ArgumentIdentity" Optional="true">The different arguments that you want to pass through to the function/script</Parameter>
		</Function>
		<Function Name="script_execute_ext" Deprecated="false" ReturnType="Any" Pure="false">
			<Description>This function works similarly to the function script_execute() only you can supply an array that contains the arguments required for the function/script being called. You may also supply two optional arguments to the function to specify an offset into the array to get the arguments from, as well as the number of arguments to use from the array (this must be a maximum of array_length - offset).</Description>
			<Parameter Name="scr" Type="String,Function,Asset.GMScript" Optional="false">The name of the function/script that you want to call</Parameter>
			<Parameter Name="array_args" Type="Array" Optional="false">The array containing the arguments for the function/script</Parameter>
			<Parameter Name="offset" Type="Real" Optional="true">OPTIONAL! The offset into the argument array</Parameter>
			<Parameter Name="num_args" Type="Real" Optional="true">OPTIONAL! The number of arguments to (from the offset onwards)</Parameter>
		</Function>
		<Function Name="method_call" Deprecated="false" ReturnType="Any" Pure="false">
			<Description>This function works similarly to the function script_execute_ext() only you can supply an array that contains the arguments required for the function/script being called. You may also supply two optional arguments to the function to specify an offset into the array to get the arguments from, as well as the number of arguments to use from the array (this must be a maximum of array_length - offset).</Description>
			<Parameter Name="method" Type="Function" Optional="false">method/function that you want to call</Parameter>
			<Parameter Name="array_args" Type="Array" Optional="false">The array containing the arguments for the function/script</Parameter>
			<Parameter Name="offset" Type="Real" Optional="true">OPTIONAL! The offset into the argument array</Parameter>
			<Parameter Name="num_args" Type="Real" Optional="true">OPTIONAL! The number of arguments to (from the offset onwards)</Parameter>
		</Function>
		<Function Name="script_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will return true or false depending on whether the script or script function with the given index exists. Note, that this is not a string, but rather the asset name which holds the unique index for each script (as it would appear in the IDE) or the script function name variable, as defined within the script asset (note that this will not work for method variables). For more information on scripts, see The Script Editor.</Description>
			<Parameter Name="scr" Type="Asset.GMScript" Optional="false">The name of the script that you want to check.</Parameter>
		</Function>
		<Function Name="script_get_name" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function will return the name as a string of the specified script. This name is the one that has been specified for the script in the Asset Browser of the main GameMaker window. For more information about scripts, see The Script Editor.</Description>
			<Parameter Name="scr" Type="Asset.GMScript,Function" Optional="false">The index of the script that you want to get the name of.</Parameter>
		</Function>
		<Function Name="sequence_create" Deprecated="false" ReturnType="Struct.Sequence" Pure="true">
			<Description>With this function you can create a new sequence object which you can then add tracks to. The function returns a struct which you can then access to setup the new sequence you have created. The contents of this struct are detailed on this page. The sequence object struct can then be used to create instances of the sequence on a room layer using the function layer_sequence_create(). Note that when creating sequence objects in this way you should remove them again by calling the function sequence_destroy() when they are no longer required, otherwise you will have a memory leak which can slow down and eventually crash your game.</Description>
		</Function>
		<Function Name="sequence_destroy" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can destroy a sequence object that has been created dynamically. You supply either the sequence object struct (as returned by the function sequence_create()) or the sequence ID (as returned by the function layer_sequence_get_sequence() or from the sequence instance struct property sequence). This function should be used whenever a dynamically created sequence is no longer required to free up the memory associated with it.</Description>
			<Parameter Name="sequence_struct_or_id" Type="Struct.Sequence" Optional="false">The sequence object struct or ID to destroy</Parameter>
		</Function>
		<Function Name="sequence_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check to see if a sequence object exists or not. You supply either the sequence object struct (as returned by the function sequence_create() or sequence_get()) or the sequence ID (as returned by the function layer_sequence_get_sequence() or from the sequence instance struct property sequence, or the index from the asset browser) and the function will return true if the sequence object exists or false if it does not.</Description>
			<Parameter Name="sequence_struct_or_id" Type="Asset.GMSequence,Struct.Sequence" Optional="false">The sequence object struct or ID to check for</Parameter>
		</Function>
		<Function Name="sequence_get" Deprecated="false" ReturnType="Struct.Sequence" Pure="true">
			<Description>With this function you can retrieve the sequence object struct from a sequence asset index. You supply the asset index for the sequence as defined in the asset browser, and the function will return the sequence object struct that can then be accessed, or -1 if the sequence doesn&apos;t exist or the asset index given is not a sequence.</Description>
			<Parameter Name="sequence_index" Type="Asset.GMSequence" Optional="false">The sequence index as defined in the asset browser.</Parameter>
		</Function>
		<Function Name="sequence_get_objects" Deprecated="false" ReturnType="Array[Asset.GMObject]" Pure="true">
			<Description>With this function you can retrieve an array of all the object indices that have instances being created within the given sequence. You supply either the sequence object struct (as returned by the function sequence_create() or sequence_get()) or the sequence ID (as returned by the function layer_sequence_get_sequence() or from the sequence instance struct property sequence) and the function will return an array, where each item in the array is an object_index for the different objects being used by the sequence to create instances.</Description>
			<Parameter Name="sequence_struct_or_id" Type="Asset.GMSequence,Struct.Sequence" Optional="false">The sequence object struct or ID to get the objects from.</Parameter>
		</Function>
		<Function Name="sequence_instance_override_object" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can override (replace) all instances of an object used in a sequence with another one. You supply the sequence instance struct ID (as returned when the sequence instance was created in the room or by using one of the room layer functions - see here), as well as the object index (as defined in the asset browser) for the object that you want to override. Finally you give an object index or an instance ID to use as the object that is going to override the sequence (supplying an instance ID will simply use the object that the instance was created from as the override). Note that this can only be done on sequence instances (not sequence objects) and must be done before the sequence starts to play, otherwise it won&apos;t work.</Description>
			<Parameter Name="sequence_instance_struct" Type="Struct.Sequence" Optional="false">The sequence instance struct to modify.</Parameter>
			<Parameter Name="object_id" Type="Asset.GMObject" Optional="false">The object index of the object within the sequence to override.</Parameter>
			<Parameter Name="instance_or_object_id" Type="Id.Instance,Asset.GMObject" Optional="false">The object index or instance ID to use to override the sequence objects.</Parameter>
		</Function>
		<Function Name="sequence_keyframedata_new" Deprecated="false" ReturnType="Struct" Pure="true">
			<Description>With this function you can create a new keyframe data struct, supplying the type of track that the keyframe data will be applied to, which will be one of the following constants:</Description>
			<Parameter Name="type" Type="Constant.SequenceTrackType" Optional="false">The type of keyframe data to create, a constant, listed above.</Parameter>
		</Function>
		<Function Name="sequence_keyframe_new" Deprecated="false" ReturnType="Struct.Keyframe" Pure="true">
			<Description>With this function you can create a new track keyframe struct, supplying the type of track that the keyframe will be applied to, which will be one of the following constants:</Description>
			<Parameter Name="type" Type="Constant.SequenceTrackType" Optional="false">The type of keyframe to create, a constant, listed above.</Parameter>
		</Function>
		<Function Name="sequence_track_new" Deprecated="false" ReturnType="Struct.Track" Pure="true">
			<Description>With this function you can create a new sequence track struct, supplying the type of track that you wish to make which will be one of the following constants:</Description>
			<Parameter Name="type" Type="Constant.SequenceTrackType" Optional="false">The type of track to create, a constant, listed above.</Parameter>
		</Function>
		<Function Name="shaders_are_supported" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will do a check to see if the chosen target platform supports shaders, returning true if they do, and false if they do not. It is important to note that on Android, if the project does not have any shader resources defined, then the function will always return false, regardless of whether the device supports shaders or not.</Description>
		</Function>
		<Function Name="shader_current" Deprecated="false" ReturnType="Asset.GMShader" Pure="true">
			<Description>This function will return the index ID value of the shader currently being used for rendering, or it will return -1 if no shader is being used.</Description>
		</Function>
		<Function Name="shader_enable_corner_id" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set a global state for all shaders being used where, when enabled, the shader &quot;steals&quot; 2 bits from the input colour values. The first is from the lower bit of the red colour value, and the second is from the lower bit of the blue colour value. These values can get then be recovered in the shader to work out which vertex you are dealing with (ie: which corner).</Description>
			<Parameter Name="enable" Type="Bool" Optional="false">Enable (true) or disable (false) this function.</Parameter>
		</Function>
		<Function Name="shader_get_name" Deprecated="false" ReturnType="String" Pure="true">
			<Description>With this function you can retrieve the name of a shader resource. You supply the unique ID value for the shader to get the name of and the function will return the name of the resource as a string.</Description>
			<Parameter Name="shader" Type="Asset.GMShader" Optional="false">The index of the shader to get the name of.</Parameter>
		</Function>
		<Function Name="shader_get_sampler_index" Deprecated="false" ReturnType="Id.Sampler" Pure="true">
			<Description>Since you cannot change the value of a shader sampler within the shader itself, you have to set it before calling the shader using one of the available uniform set functions. However, to be able to do that you must first call this function to get the &quot;handle&quot; of the shader sampler that you will want to set.</Description>
			<Parameter Name="shader" Type="Asset.GMShader" Optional="false">The index of the shader to use.</Parameter>
			<Parameter Name="uniform" Type="String" Optional="false">The shader sampler to get the handle of (a string).</Parameter>
		</Function>
		<Function Name="shader_get_uniform" Deprecated="false" ReturnType="Id.Uniform" Pure="true">
			<Description>Since you cannot change the value of a shader constant within the shader itself, you have to set it before calling the shader using one of the available uniform set functions. However, to be able to do that you must first call this function to get the &quot;handle&quot; of the shader constant that you will want to change.</Description>
			<Parameter Name="shader" Type="Asset.GMShader" Optional="false">The index of the shader to use.</Parameter>
			<Parameter Name="uniform" Type="String" Optional="false">The shader constant to get the handle of (a string).</Parameter>
		</Function>
		<Function Name="shader_is_compiled" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will check a shader at run-time to make sure that it has been successfully compiled. If it has then the function returns true otherwise it returns false. This function should be used at the start of the game to make sure that the platform running your game has successfully compiled any shaders used (particularly on Windows where some computers may be using DX9 with Shader Level 2.0 and not a later version using shader level 3.0).</Description>
			<Parameter Name="shader" Type="Asset.GMShader" Optional="false">The shader to check.</Parameter>
		</Function>
		<Function Name="shader_set_uniform_matrix_array" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function resets the draw target and should be called when you no longer wish to use the current shader (set using shader_set()).</Description>
			<Parameter Name="handle" Type="Id.Uniform" Optional="false">The handle of the shader constant to set.</Parameter>
			<Parameter Name="array" Type="Array" Optional="false">A previously initialised array of floating point values.</Parameter>
		</Function>
		<Function Name="shader_set" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the drawing target to the given shader and all further drawing will be done using that. You can end shader use with function shader_reset().</Description>
			<Parameter Name="shader" Type="Asset.GMShader" Optional="false">The index of the shader to use.</Parameter>
		</Function>
		<Function Name="shader_set_uniform_f" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the value (or values) of a shader constant. You must previously have gotten the &quot;handle&quot; of the constant using the function shader_get_uniform(), and you will have to know what type of constant it is to pass the correct number of floating point values through to it, ie: if you have a vec2 you will need to pass two values to the function.</Description>
			<Parameter Name="handle" Type="Id.Uniform" Optional="false">The handle of the shader constant to set.</Parameter>
			<Parameter Name="value1" Type="Real" Optional="false">The floating point value (or values) to set the shader constant to.</Parameter>
			<Parameter Name="value2" Type="Real" Optional="true">The floating point value (or values) to set the shader constant to.</Parameter>
			<Parameter Name="value3" Type="Real" Optional="true">The floating point value (or values) to set the shader constant to.</Parameter>
			<Parameter Name="value4" Type="Real" Optional="true">The floating point value (or values) to set the shader constant to.</Parameter>
		</Function>
		<Function Name="shader_set_uniform_f_array" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set a shader constant to hold an array of values. You must previously have gotten the &quot;handle&quot; of the constant using the function shader_get_uniform(), and you will have to have previously initialised the array.</Description>
			<Parameter Name="handle" Type="Id.Uniform" Optional="false">The handle of the shader constant to set.</Parameter>
			<Parameter Name="array" Type="Array" Optional="false">A previously initialised array of floating point values.</Parameter>
		</Function>
		<Function Name="shader_set_uniform_f_buffer" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set values of a shader constant from a buffer. You must previously have gotten the &quot;handle&quot; of the constant using the function shader_get_uniform(), and you will have to have previously initialised the buffer and filled it with buffer_f32 data.</Description>
			<Parameter Name="handle" Type="Id.Uniform" Optional="false">The handle of the shader constant to set.</Parameter>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The index of the buffer to use.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="false">The offset position (in bytes) within the buffer to read the data from.</Parameter>
			<Parameter Name="count" Type="Real" Optional="false">The number of entires to read from the buffer.</Parameter>
		</Function>
		<Function Name="shader_set_uniform_i" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the value (or values) of a shader constant. You must previously have gotten the &quot;handle&quot; of the constant using the function shader_get_uniform(), and you will have to know what type of constant it is to pass the correct number of integer values through to it, ie: if you have a vec2 you will need to pass two values to the function.</Description>
			<Parameter Name="handle" Type="Id.Uniform" Optional="false">The handle of the shader constant to set.</Parameter>
			<Parameter Name="value1" Type="Real" Optional="false">The integer value (or values) to set the shader constant to.</Parameter>
			<Parameter Name="value2" Type="Real" Optional="true">The integer value (or values) to set the shader constant to.</Parameter>
			<Parameter Name="value3" Type="Real" Optional="true">The integer value (or values) to set the shader constant to.</Parameter>
			<Parameter Name="value4" Type="Real" Optional="true">The integer value (or values) to set the shader constant to.</Parameter>
		</Function>
		<Function Name="shader_set_uniform_matrix" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the value (or values) of a shader constant to the current transform matrix (as set using the Matrix Functions). You must previously have gotten the &quot;handle&quot; of the constant using the function shader_get_uniform().</Description>
			<Parameter Name="handle" Type="Real" Optional="false">The handle of the shader constant to set.</Parameter>
		</Function>
		<Function Name="skeleton_animation_clear" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will clear the specified animation track of all animations, ready to be re-assigned.</Description>
			<Parameter Name="track" Type="Real" Optional="false">The animation track to clear.</Parameter>
		</Function>
		<Function Name="skeleton_animation_get" Deprecated="false" ReturnType="String" Pure="true">
			<Description>With this function you can get the current animation set being used by your skeletal animation sprite. The return value is a string, which will be the name of the set as you defined it in your skeletal animation program.</Description>
		</Function>
		<Function Name="skeleton_animation_get_duration" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the time required for the given animation set to run before looping back to the beginning. The return value is in seconds.</Description>
			<Parameter Name="animname" Type="String" Optional="false">The name (a string) of the animation set to use.</Parameter>
		</Function>
		<Function Name="skeleton_animation_get_ext" Deprecated="false" ReturnType="String" Pure="true">
			<Description>A single skeletal animation sprite can have various animation sets, and these sets can be assigned different tracks so that you can &quot;mix and match&quot; animation sets. This function will return the name of the animation set currently used by the given track number (as set by the function skeleton_animation_set_ext).</Description>
			<Parameter Name="track" Type="Real" Optional="false">The track number to get the animation set name of.</Parameter>
		</Function>
		<Function Name="skeleton_animation_get_frame" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the frame number of the animation on the specified animation track. The function will return -1 if no animation is assigned to the specific track given.</Description>
			<Parameter Name="track" Type="Real" Optional="false">The animation track to get the frame of.</Parameter>
		</Function>
        <Function Name="skeleton_animation_get_position" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the current position of the specified animation track in the range (0.0 to 1.0). The function will return -1 if no animation is assigned to the specific track given.</Description>
			<Parameter Name="track" Type="Real" Optional="false">The animation track to get the frame of.</Parameter>
		</Function>
		<Function Name="skeleton_animation_get_frames" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to retrieve the number of frames that any given skeleton animation has. You supply the skeleton animation name (as a string, as defined in the program used to make the animation, or as returned by using the function skeleton_animation_get, and the function returns the frames that it has as an integer value. The function will return 0 if the specified animation does not exist.</Description>
			<Parameter Name="anim_name" Type="String" Optional="false">The animation name to get the frames of.</Parameter>
		</Function>
		<Function Name="skeleton_animation_is_finished" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will return true if the animation on the given track has finished.</Description>
			<Parameter Name="track" Type="Real" Optional="false">The animation track.</Parameter>
		</Function>
		<Function Name="skeleton_animation_is_looping" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will return true if the animation on the given track is looping.</Description>
			<Parameter Name="track" Type="Real" Optional="false">The animation track.</Parameter>
		</Function>
		<Function Name="skeleton_animation_list" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can populate a (pre-created) DS list with all the names of the animations included as part of the skeletal animation sprite. The names will be strings and can then be used in the other animation functions for these types of sprite.</Description>
			<Parameter Name="sprite" Type="Asset.GMSprite" Optional="false">The sprite index of the Spine skeletal animation to get the list from.</Parameter>
			<Parameter Name="list" Type="Id.DsList" Optional="false">The ID of the DS list to populate with the animation names.</Parameter>
		</Function>
		<Function Name="skeleton_animation_mix" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>You can switch animation sets easily using the skeleton_animation_set() function, but this may cause a skip or stutter as one animation is swapped for another. To prevent this, you can set the mix value between two animation sets and the sprite will interpolate between them. normally you would want to do this in the Create Event of the instance with the skeletal animation as it only needs set once, and GameMaker will interpolate all further changes to the sprite using the animation sets in that instance. Note that the duration value is from 0 to 1, where a value of 0.5 would have a &quot;half and half&quot; interpolation from one set to the other.</Description>
			<Parameter Name="animfrom" Type="String" Optional="false">The name (a string) of the first animation set to interpolate from.</Parameter>
			<Parameter Name="animto" Type="String" Optional="false">The name (a string) of the second animation set to interpolate to.</Parameter>
			<Parameter Name="duration" Type="Real" Optional="false">The duration of the interpolation (from 0 to 1)</Parameter>
		</Function>
		<Function Name="skeleton_animation_set" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Once you have assigned a skeletal animation sprite to your instance, you can then define which animation set it should use at any given time with this function. When you created your sprite (in Spine) you will have defined multiple animations sets for different states and named each of them appropriately. These names are what you will use to tell GameMaker which animation set to use at any time in your game. For example, if your sprite is for a platform game, then you may have a &quot;jump&quot; set, a &quot;run&quot; set and an &quot;idle&quot; set all contained within the one sprite and you can switch between them in your game using this function.</Description>
			<Parameter Name="animname" Type="String" Optional="false">The name (a string) of the animation set to use.</Parameter>
			<Parameter Name="loop" Type="Bool" Optional="true">Whether the animation should loop (defaults to true).</Parameter>
		</Function>
		<Function Name="skeleton_animation_set_ext" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>When you set an animation set for your skeletal animation sprite, it is assigned track 0 internally. However, you can assign further sets to further tracks (1 and above) and in this way have your sprite play two (or more) animations at the same time. Note that the sprite should have been designed in your animation program with this in mind, such that the &quot;base&quot; animation in track 0 only has keyframes for certain bones, while the next tracks have keyframes for the others. For example, if you have a &quot;walk&quot; animation and its keyframes only affect the legs of the sprite, you can then have a set of head animations and arm animations which you can set in tracks 1 and 2 respectively, permitting you to have a base movement and adapt on it in real-time while the game is being played.</Description>
			<Parameter Name="animname" Type="String" Optional="false">The name (a string) of the animation set to use.</Parameter>
			<Parameter Name="track" Type="Real" Optional="false">The track for the animation set to use.</Parameter>
			<Parameter Name="loop" Type="Bool" Optional="true">Whether the animation should loop (defaults to true).</Parameter>
		</Function>
		<Function Name="skeleton_animation_set_frame" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will set the animation assigned to the given track to the frame you supply. The frame index should be an real value between 0 and the number of frames for the animation (which you can get using the function skeleton_animation_get_frames). If you supply a value outside of this range, the animation will be looped to make up the difference, for example if the animation has 5 frames and you set the frame to 8, the actual frame shown will be 3.</Description>
			<Parameter Name="track" Type="Real" Optional="false">The animation track to set the frame of.</Parameter>
			<Parameter Name="index" Type="Real" Optional="false">The new index for the animation frame.</Parameter>
		</Function>
        <Function Name="skeleton_animation_set_position" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will set the animation assigned to the given track to the proportional position you supply. The position should be an real value between 0.0 and 1.0. If you supply a value outside of this range, the animation will be looped to make up the difference, for example if the given position is 1.5 the actual position will be 0.5.</Description>
			<Parameter Name="track" Type="Real" Optional="false">The animation track to set the frame of.</Parameter>
			<Parameter Name="position" Type="Real" Optional="false">The new position for the animation track.</Parameter>
		</Function>
		<Function Name="skeleton_attachment_create" Deprecated="false" ReturnType="Any" Pure="true">
			<Description>When you create you skeletal animation sprite, you can assign attachment slots and attachments to go in them. These are simply images that are apart from the animation but when attached will move along with the bone they are attached to. Normally you would assign these attachments in your animation program (Spine), but with this function you can create your own at run-time using a sprite asset from your game. the function requires that you give the attachment a UNIQUE name (as a string) and then set the sprite_index and image_index to use, as well as the x and y origin (which can be different to that defined by the sprite in the sprite properties), and you can also set any transforms that you wish to be applied to the image when attached. If the attachment was successfully created the function will return 1 and if it was not (you supplied an invalid sprite index, or the base sprite is not a Spine sprite) then it will return -1.</Description>
			<Parameter Name="name" Type="String" Optional="false">The name (as a string) of the attachment to create.</Parameter>
			<Parameter Name="sprite" Type="Asset.GMSprite" Optional="false">The sprite_index to get the attachment image from.</Parameter>
			<Parameter Name="ind" Type="Real" Optional="false">The image_index to get the attachment image from.</Parameter>
			<Parameter Name="xorigin" Type="Real" Optional="false">The x origin for the image being used.</Parameter>
			<Parameter Name="yorigin" Type="Real" Optional="false">The y origin for the image being used.</Parameter>
			<Parameter Name="xscale" Type="Real" Optional="false">The horizontal scaling of the image, as a multiplier: 1 = normal scaling, 0.5 is half etc...</Parameter>
			<Parameter Name="yscale" Type="Real" Optional="false">The vertical scaling of the image, as a multiplier: 1 = normal scaling, 0.5 is half etc...</Parameter>
			<Parameter Name="rot" Type="Real" Optional="false">The rotation of the image. 0=normal, 90=turned 90 degrees counter-clockwise etc.</Parameter>
		</Function>
		<Function Name="skeleton_attachment_create_colour" Deprecated="false" ReturnType="Any" Locale="GB" Pure="true">
			<Description>When you create you skeletal animation sprite, you can assign attachment slots and attachments to go in them. These are simply images (sprites) that are separate from the animation but when attached will move along with the bone they are attached to. Normally you would assign these attachments in your animation program (Spine), but with this function you can create your own at run-time using a sprite asset from your game. the function requires that you give the attachment a UNIQUE name (as a string) and then set the sprite_index and image_index to use, as well as the x and y origin (which can be different to that defined by the sprite in the sprite properties), and you can also set any transforms that you wish to be applied to the image when attached, as well as the colour to be blended with the image and it&apos;s alpha (transparency) value. If the attachment was successfully created the function will return 1 and if it was not (you supplied an invalid sprite index, or the base sprite is not a Spine sprite) then it will return -1.</Description>
			<Parameter Name="name" Type="String" Optional="false">The name (as a string) of the attachment to create.</Parameter>
			<Parameter Name="sprite" Type="Asset.GMSprite" Optional="false">The sprite_index to get the attachment image from.</Parameter>
			<Parameter Name="ind" Type="Real" Optional="false">The image_index to get the attachment image from.</Parameter>
			<Parameter Name="xorigin" Type="Real" Optional="false">The x origin for the image being used.</Parameter>
			<Parameter Name="yorigin" Type="Real" Optional="false">The y origin for the image being used.</Parameter>
			<Parameter Name="xscale" Type="Real" Optional="false">The horizontal scaling of the image, as a multiplier: 1 = normal scaling, 0.5 is half etc...</Parameter>
			<Parameter Name="yscale" Type="Real" Optional="false">The vertical scaling of the image, as a multiplier: 1 = normal scaling, 0.5 is half etc...</Parameter>
			<Parameter Name="rot" Type="Real" Optional="false">The rotation of the image: 0 = normal, 90 = turned 90° counter-clockwise etc.</Parameter>
			<Parameter Name="colour" Type="Constant.Color" Optional="false">The colour value to use (A constant, integer or hex value).</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha value to use (from 0 to 1).</Parameter>
		</Function>
		<Function Name="skeleton_attachment_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function checks if a custom attachment has been created using the skeleton_attachment_create() or skeleton_attachment_replace() functions.</Description>
			<Parameter Name="name" Type="String" Optional="false">The name (as a string) of the attachment to check.</Parameter>
		</Function>
		<Function Name="skeleton_attachment_replace" Deprecated="false" ReturnType="Any" Pure="true">
			<Description>When you create you skeletal animation sprite, you can assign attachment slots and attachments to go in them. These are simply images that are apart from the animation but when attached will move along with the bone they are attached to. Normally you would assign these attachments in your animation program (Spine), but with this function you can create/replace your own at run-time using a sprite asset from your game. the function requires that you give the attachment a name (as a string) and then set the sprite_index and image_index to use, as well as the x and y origin (which can be different to that defined by the sprite in the sprite properties), and you can also set any transforms that you wish to be applied to the image when attached. If the attachment was successfully created the function will return 1 and if it was not (you supplied an invalid sprite index, or the base sprite is not a Spine sprite) then it will return -1.</Description>
			<Parameter Name="name" Type="String" Optional="false">The name (as a string) of the attachment to create.</Parameter>
			<Parameter Name="sprite" Type="Asset.GMSprite" Optional="false">The sprite_index to get the attachment image from.</Parameter>
			<Parameter Name="ind" Type="Real" Optional="false">The image_index to get the attachment image from.</Parameter>
			<Parameter Name="xorigin" Type="Real" Optional="false">The x origin for the image being used.</Parameter>
			<Parameter Name="yorigin" Type="Real" Optional="false">The y origin for the image being used.</Parameter>
			<Parameter Name="xscale" Type="Real" Optional="false">The horizontal scaling of the image, as a multiplier: 1 = normal scaling, 0.5 is half etc...</Parameter>
			<Parameter Name="yscale" Type="Real" Optional="false">The vertical scaling of the image, as a multiplier: 1 = normal scaling, 0.5 is half etc...</Parameter>
			<Parameter Name="rot" Type="Real" Optional="false">The rotation of the image. 0=normal, 90=turned 90 degrees counter-clockwise etc.</Parameter>
		</Function>
		<Function Name="skeleton_attachment_replace_colour" Deprecated="false" ReturnType="Any" Locale="GB" Pure="true">
			<Description>When you create you skeletal animation sprite, you can assign attachment slots and attachments to go in them. These are simply images (sprites) that are separate from the animation but when attached will move along with the bone they are attached to. Normally you would assign these attachments in your animation program (Spine), but with this function you can create/replace your own at run-time using a sprite asset from your game. the function requires that you give the attachment a name (as a string) and then set the sprite_index and image_index to use, as well as the x and y origin (which can be different to that defined by the sprite in the sprite properties), and you can also set any transforms that you wish to be applied to the image when attached, as well as the colour to be blended with the image and it&apos;s alpha (transparency) value. If the attachment was successfully created the function will return 1 and if it was not (you supplied an invalid sprite index, or the base sprite is not a Spine sprite) then it will return -1.</Description>
			<Parameter Name="name" Type="String" Optional="false">The name (as a string) of the attachment to create.</Parameter>
			<Parameter Name="sprite" Type="Asset.GMSprite" Optional="false">The sprite_index to get the attachment image from.</Parameter>
			<Parameter Name="ind" Type="Real" Optional="false">The image_index to get the attachment image from.</Parameter>
			<Parameter Name="xorigin" Type="Real" Optional="false">The x origin for the image being used.</Parameter>
			<Parameter Name="yorigin" Type="Real" Optional="false">The y origin for the image being used.</Parameter>
			<Parameter Name="xscale" Type="Real" Optional="false">The horizontal scaling of the image, as a multiplier: 1 = normal scaling, 0.5 is half etc...</Parameter>
			<Parameter Name="yscale" Type="Real" Optional="false">The vertical scaling of the image, as a multiplier: 1 = normal scaling, 0.5 is half etc...</Parameter>
			<Parameter Name="rot" Type="Real" Optional="false">The rotation of the image: 0 = normal, 90 = turned 90° counter-clockwise etc.</Parameter>
			<Parameter Name="colour" Type="Constant.Color" Optional="false">The colour value to use (A constant, integer or hex value).</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha value to use (from 0 to 1).</Parameter>
		</Function>
		<Function Name="skeleton_attachment_destroy" Deprecated="false" ReturnType="Any" Locale="GB" Pure="true">
			<Description>This function destroys a custom attachment previously created using the skeleton_attachment_create() or skeleton_attachment_replace() functions. Any slots using the attachment will be cleared.</Description>
			<Parameter Name="name" Type="String" Optional="false">The name (as a string) of the attachment to destroy.</Parameter>
		</Function>
		<Function Name="skeleton_attachment_get" Deprecated="false" ReturnType="String" Pure="true">
			<Description>A skeletal animation sprite may have other sprites added as attachments, with these sprites being added to a named slot (the name is given when you create the attachment slot in your animation program) and they will be drawn along with the animation of the current sprite. With this function you can get the name (as a string) of the attachment for the given slot of the currently assigned sprite. Note that attached sprites are referenced through their name string as assigned in Spine, or when you called skeleton_attachment_create().</Description>
			<Parameter Name="slot" Type="String" Optional="false">The slot name (a string) to get the attachment of.</Parameter>
		</Function>
		<Function Name="skeleton_attachment_set" Deprecated="false" ReturnType="String" Pure="false">
			<Description>A skeletal animation sprite may have other images added as attachments, with these images being added to a named slot (the name is given when you create the attachment slot in your animation program) and they will be drawn along with the animation of the current sprite. With this function you can set an attachment to a given slot, where you are required to give the names (as strings) of the slot and the attachment. These names are defined by the animation program used, or (in the case of the attachment) when you call skeleton_attachment_create().</Description>
			<Parameter Name="slot" Type="String" Optional="false">The slot name (a string) to get the attachment of.</Parameter>
			<Parameter Name="attachment" Type="Asset.GMSprite,String" Optional="false">The name (as a string or a sprite_index) of the attachment image.</Parameter>
		</Function>
		<Function Name="skeleton_bone_data_get" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>Your skeletal animation is made up of a number of &quot;bones&quot;, which you will have defined and given names to in your animation program. This function can be used to get information on the named bone at any time and store the data in an empty DS map, which you must have created previously. Note that this data refers to the default pose for the skeleton, and not the current pose that is being drawn. If you need the data from the current pose, use skeleton_bone_state_get().</Description>
			<Parameter Name="bone" Type="String" Optional="false">The name (as a string) of the bone.</Parameter>
			<Parameter Name="map" Type="Id.DsMap" Optional="false">The (previously created) DS map that stores the bone data.</Parameter>
		</Function>
		<Function Name="skeleton_bone_data_set" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Your skeletal animation is made up of a number of &quot;bones&quot;, which you will have defined and given names to in your animation program, and this function can be used to set certain data for the named bone at any time. Note that this data refers to the default pose for the skeleton, and not the current pose that is being drawn (for that use the function skeleton_bone_state_set()), and must be set from a previously created DS map, which should have the following keys and their equivalent values:</Description>
			<Parameter Name="bone" Type="String" Optional="false">The name (as a string) of the bone.</Parameter>
			<Parameter Name="map" Type="Id.DsMap" Optional="false">The (previously created) DS map that stores the bone data.</Parameter>
		</Function>
		<Function Name="skeleton_bone_list" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can populate a (pre-created) DS list with all the names of the bones used as part of the skeletal animation sprite. The names will be strings and can then be used in the other skeleton animation bone functions for these types of sprite.</Description>
			<Parameter Name="sprite" Type="Asset.GMSprite" Optional="false">The sprite index of the Spine skeletal animation to get the list from.</Parameter>
			<Parameter Name="list" Type="Id.DsMap" Optional="false">The ID of the DS list to populate with the bone names.</Parameter>
		</Function>
		<Function Name="skeleton_bone_state_get" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>Your skeletal animation is made up of a number of &quot;bones&quot;, which you will have defined and given names to in your animation program, and this function can be used to get certain data for the named bone at any time. Note that this data refers to the current pose for the skeleton, depending on the animation set used, and the function requires a previously created DS map, which will then have the following keys and their equivalent values after calling the function:</Description>
			<Parameter Name="bone" Type="String" Optional="false">The name (as a string) of the bone.</Parameter>
			<Parameter Name="map" Type="Id.DsMap" Optional="false">The (previously created) DS map that stores the bone data.</Parameter>
		</Function>
		<Function Name="skeleton_bone_state_set" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Your skeletal animation is made up of a number of &quot;bones&quot;, which you will have defined and given names to in your animation program, and this function can be used to set certain data for the named bone at any time. Note that this data will set the current pose for the skeleton, depending on the animation set used, and the function requires a previously created DS map, which should have the following keys and their required values:</Description>
			<Parameter Name="bone" Type="String" Optional="false">The name (as a string) of the bone.</Parameter>
			<Parameter Name="map" Type="Id.DsMap" Optional="false">The (previously created) DS map that stores the bone data.</Parameter>
		</Function>
		<Function Name="draw_skeleton" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function is only for use with sprites that have been created using a skeletal animation program like Spine. While you can draw these sprites using the normal draw functions (like draw_self()), there are times when you may want to draw a single frame or show a change of skin texture without actually changing the sprite properties. In these cases you can draw the sprite with this function, where you give the sprite index and then the name of the animation to get the frame from (a string, as set within the program used to make the sprite). Next you give the name of the skin to use (again, as set when the sprite was made), and a frame value. The frame value is for telling GameMaker what part of the animation to show and is a value between 0 and the image_number. The rest of the arguments are the same as those used for normal sprite drawing and will change the scale, angle, blend colour and alpha of the final animation frame being drawn.</Description>
			<Parameter Name="sprite" Type="Asset.GMSprite" Optional="false">The index of the sprite to draw.</Parameter>
			<Parameter Name="animname" Type="String" Optional="false">The name of the animation to get the frame from (a string).</Parameter>
			<Parameter Name="skinname" Type="String" Optional="false">The name of the skin to use (a string).</Parameter>
			<Parameter Name="frame" Type="Real" Optional="false">The animation frame to draw (from 0 to image_number - 1).</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of where to draw the sprite.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of where to draw the sprite.</Parameter>
			<Parameter Name="xscale" Type="Real" Optional="false">The horizontal scaling of the sprite, as a multiplier: 1 = normal scaling, 0.5 is half etc...</Parameter>
			<Parameter Name="yscale" Type="Real" Optional="false">The vertical scaling of the sprite, as a multiplier: 1 = normal scaling, 0.5 is half etc...</Parameter>
			<Parameter Name="rot" Type="Real" Optional="false">The rotation of the sprite. 0=normal, 90=turned 90 degrees counter-clockwise etc.</Parameter>
			<Parameter Name="colour" Type="Constant.Color" Optional="false">The colour with which to blend the sprite.</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha of the sprite (from 0 to 1 where 0 is transparent and 1 opaque).</Parameter>
		</Function>
		<Function Name="draw_skeleton_collision" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will draw the collision masks associated with the given skeletal animation. You supply the base sprite, the animation set to use and the frame to get the information from, and you can also set the transform properties to suit.</Description>
			<Parameter Name="sprite" Type="Asset.GMSprite" Optional="false">The index of the sprite to draw.</Parameter>
			<Parameter Name="animname" Type="String" Optional="false">The name of the animation to get the frame from (a string).</Parameter>
			<Parameter Name="frame" Type="Real" Optional="false">The animation frame to draw (from 0 to image_number - 1).</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of where to draw the sprite.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of where to draw the sprite.</Parameter>
			<Parameter Name="xscale" Type="Real" Optional="false">The horizontal scaling of the sprite, as a multiplier: 1 = normal scaling, 0.5 is half etc...</Parameter>
			<Parameter Name="yscale" Type="Real" Optional="false">The vertical scaling of the sprite, as a multiplier: 1 = normal scaling, 0.5 is half etc...</Parameter>
			<Parameter Name="rot" Type="Real" Optional="false">The rotation of the sprite. 0=normal, 90=turned 90 degrees counter-clockwise etc.</Parameter>
			<Parameter Name="colour" Type="Constant.Color" Optional="false">The colour with which to blend the sprite.</Parameter>
		</Function>
		<Function Name="draw_skeleton_instance" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function is only for use with instances which have sprites assigned to them created using the skeletal animation program Spine. While you can draw these sprites using the normal draw functions (like draw_self()), there are times when you may want to draw a single frame or show a change of skin texture without actually changing the sprite properties for an instance. In these cases you can draw the sprite that has been assigned to the instance with this function, where you give the unique Instance ID and then the name of the animation to get the frame from (a string, as set within the program used to make the sprite). Next you give the name of the skin to use (again, as set when the sprite was made), and a frame value. The frame value is for telling GameMaker what part of the animation to show and is a value between 0 and the image_number. The rest of the arguments are the same as those used for normal sprite drawing and will change the scale, angle, blend colour and alpha of the final animation frame being drawn.</Description>
			<Parameter Name="instance" Type="Id.Instance" Optional="false">The index of the instance to draw the sprite from.</Parameter>
			<Parameter Name="animname" Type="String" Optional="false">The name of the animation to get the frame from (a string).</Parameter>
			<Parameter Name="skinname" Type="String" Optional="false">The name of the skin to use (a string).</Parameter>
			<Parameter Name="frame" Type="Real" Optional="false">The animation frame to draw (from 0 to image_number - 1).</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of where to draw the sprite.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of where to draw the sprite.</Parameter>
			<Parameter Name="xscale" Type="Real" Optional="false">The horizontal scaling of the sprite, as a multiplier: 1 = normal scaling, 0.5 is half etc...</Parameter>
			<Parameter Name="yscale" Type="Real" Optional="false">The vertical scaling of the sprite, as a multiplier: 1 = normal scaling, 0.5 is half etc...</Parameter>
			<Parameter Name="rot" Type="Real" Optional="false">The rotation of the sprite. 0=normal, 90=turned 90 degrees counter-clockwise etc.</Parameter>
			<Parameter Name="colour" Type="Constant.Color" Optional="false">The colour with which to blend the sprite.</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha of the sprite (from 0 to 1 where 0 is transparent and 1 opaque).</Parameter>
		</Function>
		<Function Name="draw_skeleton_time" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will draw the given animation using the given skin at a specific time in the animation. The time value should be between 0 (the beginning) and the end duration of the animation, which you can find using the function skeleton_animation_get_duration(). You can set the time value to values higher than the total duration of the animation and the animation will loop back to the beginning, but you run the risk of losing floating point accuracy as the accumulated time gets larger.</Description>
			<Parameter Name="sprite" Type="Asset.GMSprite" Optional="false">The index of the sprite to draw.</Parameter>
			<Parameter Name="animname" Type="String" Optional="false">The name of the animation to get the frame from (a string).</Parameter>
			<Parameter Name="skinname" Type="String" Optional="false">The name of the skin to use for drawing (a string).</Parameter>
			<Parameter Name="time" Type="Real" Optional="false">The time-frame to draw the animation at (from 0 to the end duration, in seconds).</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of where to draw the sprite.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of where to draw the sprite.</Parameter>
			<Parameter Name="xscale" Type="Real" Optional="false">The horizontal scaling of the sprite, as a multiplier: 1 = normal scaling, 0.5 is half etc...</Parameter>
			<Parameter Name="yscale" Type="Real" Optional="false">The vertical scaling of the sprite, as a multiplier: 1 = normal scaling, 0.5 is half etc...</Parameter>
			<Parameter Name="rot" Type="Real" Optional="false">The rotation of the sprite. 0=normal, 90=turned 90 degrees counter-clockwise etc.</Parameter>
			<Parameter Name="colour" Type="Constant.Color" Optional="false">The colour with which to blend the sprite.</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false" />
		</Function>
		<Function Name="skeleton_collision_draw_set" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function, you can toggle on (true) or off (false) drawing the collision data for the current skeletal animation sprite being used by the instance. If this is switched on, the bounding box and the precise collision mask will be drawn as outlines around the sprite.</Description>
			<Parameter Name="flag" Type="Bool" Optional="false">Set to true to turn on drawing, and false to turn it off.</Parameter>
		</Function>
		<Function Name="skeleton_get_bounds" Deprecated="false" ReturnType="Array[Real]" Pure="true">
			<Description>This function will return an array of values associated with any given bounding box for the currently assigned skeleton animation sprite. You supply the index number for the bounding box to get the details of (you can retrieve the total number of bounding boxes for the sprite using the function skeleton_get_num_bounds()) and the function will return an array with the following elements:</Description>
			<Parameter Name="index" Type="Real" Optional="false">The bounding box index to get the values of.</Parameter>
		</Function>
		<Function Name="skeleton_get_minmax" Deprecated="false" ReturnType="Array[Real]" Pure="true">
			<Description>This function will return an array with the total bounding box value for all the individual bounding boxes assigned to a skeleton animation sprite. The returned array will have 4 elements:</Description>
		</Function>
		<Function Name="skeleton_get_num_bounds" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the number of bounding boxes associated with the skeleton animation sprite assigned to the instance running the code. This can then be used along with the function skeleton_get_bounds() to retrieve data about each of the bounding boxes.</Description>
		</Function>
		<Function Name="skeleton_skin_create" Deprecated="false" ReturnType="Struct.SkeletonSkin" Pure="true">
			<Description>Creates a new skin by combining one or more skins defined in the sprite. This can be used (for example) to combine multiple skins defining different pieces of clothing or accessories on a character sprite.</Description>
			<Parameter Name="skin_name" Type="String" Optional="false">The name of the skin to create.</Parameter>
			<Parameter Name="base_skins" Type="Array[String]" Optional="false">Array of skin names defined in the sprite to combine.</Parameter>
		</Function>
		<Function Name="skeleton_skin_get" Deprecated="false" ReturnType="String" Pure="true">
			<Description>With skeletal animation sprites, you can assign separate textures (called &quot;skins&quot;) to the animation, thereby using one animation for multiple different things. This function will return the name of the skin (as a string) that is currently assigned to the skeletal animation sprite your instance is using. The name returned is that which you set when you created the sprite in your animation program.</Description>
		</Function>
		<Function Name="skeleton_skin_list" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can populate a (pre-created) DS list with all the names of the skins included as part of the skeletal animation sprite. The names will be strings and can then be used in the other skeleton animation skin functions for these types of sprite.</Description>
			<Parameter Name="sprite" Type="Asset.GMSprite" Optional="false">The sprite index of the Spine skeletal animation to get the list from.</Parameter>
			<Parameter Name="list" Type="Id.DsList" Optional="false">The ID of the DS list to populate with the animation names.</Parameter>
		</Function>
		<Function Name="skeleton_skin_set" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>A skeletal animation sprite can be drawn with a variety of textures (called &quot;skins&quot;), permitting you to use one single animation for multiple different purposes. For example, you may have a generic walk animation and this can be used by your NPC characters, enemies, etc... in a game simply by changing the skin it is drawn with. These skins need to have been previously created and named in your animation program, and this name is passed into the function (as a string) to set the sprite to use that skin when being drawn.</Description>
			<Parameter Name="skinname" Type="Any" Optional="false">The name (a string) of the skin to use (or a reference returned by the skeleton_skin_create() function).</Parameter>
		</Function>
		<Function Name="skeleton_find_slot" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can find which slots are at a specified room-space position in the Spine sprite associated with the current instance. You create a DS list and supply its ID along with an x/y position to check and the list will be populated with name string for each of the available attachment slots for the sprite (including any attachment modifications). Note that the list is always sorted in descending order starting from the top-most slot.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x position in the room to check.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position in the room to check.</Parameter>
			<Parameter Name="list" Type="Id.DsList" Optional="false">The ID of the DS list to populate with the DS maps.</Parameter>
		</Function>
		<Function Name="skeleton_slot_alpha_get" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get an attachment slot alpha value. You supply the slot name (a string) and the function will return an real value for the alpha between 0 and 1.</Description>
			<Parameter Name="slot" Type="String" Optional="false">The slot name to check, a string</Parameter>
		</Function>
		<Function Name="skeleton_slot_colour_get" Deprecated="false" ReturnType="Real" Locale="GB" Pure="true">
			<Description>With this function you can get an attachment slot colour. You supply the slot name (a string) and the function will return an integer value for the colour.</Description>
			<Parameter Name="slot" Type="String" Optional="false">The slot name to check, a string</Parameter>
		</Function>
		<Function Name="skeleton_slot_colour_set" Deprecated="false" ReturnType="Undefined" Locale="GB" Pure="false">
			<Description>With this function you can set an attachment slot colour and alpha so all sprites attached to it will be drawn with these blend values. Keep in mind that the instance sprite can have a blend colour and alpha setting (image_blend and image_alpha), as can the attachment (see the function skeleton_attachment_create_colour()), and so the final colour and alpha that the assigned attachment sprite for the slot will have will be a composite of all these values.</Description>
			<Parameter Name="slot" Type="String" Optional="false">The slot name to set, a string</Parameter>
			<Parameter Name="colour" Type="Constant.Color" Optional="false">The colour to set, either an integer, a constant, or a hex value.</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha to set from 0 to 1.</Parameter>
		</Function>
		<Function Name="skeleton_slot_data" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can populate a (pre-created) DS list with data for each of the available attachment slots that an animation contains. This data is returned in the forum of a DS map which contains the following key/value pairs:</Description>
			<Parameter Name="sprite" Type="Asset.GMSprite" Optional="false">The sprite index of the Spine skeletal animation to get the data from.</Parameter>
			<Parameter Name="list" Type="Real" Optional="false">The ID of the DS list to populate with the DS maps.</Parameter>
		</Function>
		<Function Name="skeleton_slot_data_instance" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can populate a (pre-created) DS list with data for each of the available attachment slots for the Spine sprite associated with the current instance (including any attachment modifications). This data is returned in the forum of a DS map which contains the following key/value pairs:</Description>
			<Parameter Name="list" Type="Real" Optional="false">The ID of the DS list to populate with the DS maps.</Parameter>
		</Function>
		<Function Name="skeleton_slot_list" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can populate a (pre-created) DS list with all the names of the slots created as part of the skeletal animation sprite. The names will be strings and can then be used in the other skeleton animation slot functions for these types of sprite.</Description>
			<Parameter Name="sprite" Type="Asset.GMSprite" Optional="false">The sprite index of the Spine skeletal animation to get the list from.</Parameter>
			<Parameter Name="list" Type="Id.DsList" Optional="false">The ID of the DS list to populate with the bone names.</Parameter>
		</Function>
		<Function Name="sprite_get_bbox_bottom" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the relative position of the bottom of the sprite bounding box. This value is given as a relative value based on the upper left corner of the base sprite asset being (0,0). it is the same value as can be found in the sprite editor for the collision mask properties. The image below shows how it is calculated:</Description>
			<Parameter Name="ind" Type="Asset.GMSprite" Optional="false">The index of the sprite to check.</Parameter>
		</Function>
		<Function Name="sprite_get_bbox_left" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the relative position of the left of the sprite bounding box. This value is given as a relative value based on the upper left corner of the base sprite asset being (0,0). it is the same value as can be found in the sprite editor for the collision mask properties. The image below shows how it is calculated:</Description>
			<Parameter Name="ind" Type="Asset.GMSprite" Optional="false">The index of the sprite to check.</Parameter>
		</Function>
		<Function Name="sprite_get_bbox_mode" Deprecated="false" ReturnType="Constant.BBoxMode" Pure="true">
			<Description>This function will return the current &quot;mode&quot; for the bounding box calculations. You supply the sprite index of the sprite to check, and the function will return one of the constants shown below.</Description>
			<Parameter Name="ind" Type="Asset.GMSprite" Optional="false">The index of the sprite to check.</Parameter>
		</Function>
		<Function Name="sprite_get_bbox_right" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the relative position of the right of the sprite bounding box. This value is given as a relative value based on the upper left corner of the base sprite asset being (0,0). it is the same value as can be found in the sprite editor for the collision mask properties. The image below shows how it is calculated:</Description>
			<Parameter Name="ind" Type="Asset.GMSprite" Optional="false">The index of the sprite to check.</Parameter>
		</Function>
		<Function Name="sprite_get_bbox_top" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the relative position of the top of the sprite bounding box. This value is given as a relative value based on the upper left corner of the base sprite asset being (0,0). it is the same value as can be found in the sprite editor for the collision mask properties. The image below shows how it is calculated:</Description>
			<Parameter Name="ind" Type="Asset.GMSprite" Optional="false">The index of the sprite to check.</Parameter>
		</Function>
		<Function Name="sprite_get_height" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can find the height of the base sprite asset, with no transforms, in pixels.</Description>
			<Parameter Name="index" Type="Asset.GMSprite" Optional="false">The index of the sprite to find the height of.</Parameter>
		</Function>
		<Function Name="sprite_get_info" Deprecated="false" ReturnType="Struct.SpriteInfo" Pure="true">
			<Description>This function is used to retrieve information for the given sprite. You supply a sprite index (which can be an asset added through the Asset Browser or a sprite added at runtime) and the function returns a struct with the following variables:</Description>
			<Parameter Name="index" Type="Asset.GMSprite" Optional="false">The index of the sprite to get the information for.</Parameter>
		</Function>
		<Function Name="sprite_get_name" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function will return the name as a string of the specified sprite. This name is the one that has been specified for the sprite in the resource tree of the main GameMaker window. Please note that this is only a string and cannot be used to reference the sprite directly - for that you would need the sprite index. You can, however, use this string to get the sprite index using the returned string along with the function asset_get_index().</Description>
			<Parameter Name="index" Type="Asset.GMSprite" Optional="false">The index of the sprite to get the name of.</Parameter>
		</Function>
		<Function Name="sprite_get_nineslice" Deprecated="false" ReturnType="Struct" Pure="true">
			<Description>This function returns the Nine Slice struct for a sprite, containing all its Nine Slice properties as set in the Sprite Editor or using sprite_set_nineslice(). The contents of this struct are detailed on this page.</Description>
			<Parameter Name="ind" Type="Asset.GMSprite" Optional="false">The index of the sprite from which the Nine Slice struct will be retrieved</Parameter>
		</Function>
		<Function Name="sprite_get_number" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>A sprite has to have at least one sub-image and this function will return just how many it has. Remember, a sprite sub-image starts being numbered from 0, so if this function returns 3 (the sprite being checked has 3 sub-images) they will be numbered 0, 1 and 2.</Description>
			<Parameter Name="index" Type="Asset.GMSprite" Optional="false">The index of the sprite.</Parameter>
		</Function>
		<Function Name="sprite_get_speed" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to retrieve the sprite speed as defined for the sprite resource in the Sprite Editor. The value returned can then be used, for example, to calculate how many frames may be drawn for different image_speed. Note that the return value will be very different depending on the type of speed that was applied in the Sprite Editor, either Frames Per Second, or Frames Per Game Frame. The following two examples illustrate this:</Description>
			<Parameter Name="index" Type="Asset.GMSprite" Optional="false">The index of the sprite to get the speed of</Parameter>
		</Function>
		<Function Name="sprite_get_speed_type" Deprecated="false" ReturnType="Constant.SpriteSpeed" Pure="true">
			<Description>This function can be used to retrieve the sprite animation type as defined for the sprite resource in the Sprite Editor. The value returned will be one of the following constants:</Description>
			<Parameter Name="index" Type="Asset.GMSprite" Optional="false">The index of the sprite to get the animation type of</Parameter>
		</Function>
		<Function Name="sprite_get_texture" Deprecated="false" ReturnType="Pointer.Texture" Pure="true">
			<Description>This function returns a special pointer for the sprite texture page. This value can then be used in other draw functions, particularly in the 2D primitive functions, as well as the Shader functions. You can get more information about the returned texture page using the different texture_ functions found here.</Description>
			<Parameter Name="spr" Type="Asset.GMSprite" Optional="false">The index of the sprite to use.</Parameter>
			<Parameter Name="subimg" Type="Real" Optional="false">The sub-image of the sprite to use.</Parameter>
		</Function>
		<Function Name="sprite_get_tpe" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return a special value that relates to the position of the given sprite and sub-image on the texture page used by your game. In this way you can pass the value to extensions for use outside of the compiled game, effectively bypassing the GameMaker drawing functions and permitting the sprite to be used in DOM content which can then be drawn anywhere within the window that contains the game canvas. This function is of particular interest to those that wish to create buttons and other interactive media outside of the GameMaker canvas element on their host page using the function clickable_add().</Description>
			<Parameter Name="sprite" Type="Asset.GMSprite" Optional="false">The index of the sprite to find the texture page entry of.</Parameter>
			<Parameter Name="index" Type="Real" Optional="false">The image index of the sprite.</Parameter>
		</Function>
		<Function Name="sprite_get_uvs" Deprecated="false" ReturnType="Array[Real]" Pure="true">
			<Description>This function returns an array with the UV coordinates and other data for the texture of the sprite sub-image on the texture page. The function returns an array with the following 8 elements:</Description>
			<Parameter Name="sprite" Type="Asset.GMSprite" Optional="false">The index of the sprite to use.</Parameter>
			<Parameter Name="subimage" Type="Real" Optional="false">The sub-image of the sprite to use.</Parameter>
		</Function>
		<Function Name="sprite_get_width" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can find the width of the base resource sprite, with no transforms, in pixels.</Description>
			<Parameter Name="index" Type="Asset.GMSprite" Optional="false">The index of the sprite to find the width of.</Parameter>
		</Function>
		<Function Name="sprite_get_xoffset" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>When you define a sprite in the sprite editor, you need to set the origin for that sprite. This is the point at which the sprite will be &quot;attached&quot; or &quot;drawn&quot; when used with an instance. This function returns the relative offset for the x-axis of the origin based on the upper left corner being the 0,0 position, with a +x being right and a -x being left of this. The following image illustrates this:</Description>
			<Parameter Name="index" Type="Asset.GMSprite" Optional="false">The index of the sprite to find the xoffset of.</Parameter>
		</Function>
		<Function Name="sprite_get_yoffset" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>When you define a sprite in the sprite editor, you need to set the origin for that sprite. This is the point at which the sprite will be &quot;attached&quot; or &quot;drawn&quot; when used with an instance. This function returns the relative offset for the y-axis of the origin based on the upper left corner being the 0,0 position, with a +y being down and a -y being up from this. The following image illustrates this:</Description>
			<Parameter Name="index" Type="Asset.GMSprite" Optional="false">The index of the sprite to find the yoffset of.</Parameter>
		</Function>
		<Function Name="sprite_add" Deprecated="false" ReturnType="Asset.GMSprite" Pure="false">
			<Description>With this function you can add an image as a sprite, loading it from an external source where the image file to be loaded should always be in either *.png, *.gif, *.jpg/jpeg or *.json format (*json files are used for loading skeleton animation sprites made with Spine). The function returns the new sprite index which must then be used in all further code that relates to the sprite. If you use this function with HTML5 or are getting an image from a URL, this function will also generate an Image Loaded asynchronous event. See this page for more information.</Description>
			<Parameter Name="fname" Type="String" Optional="false">The name (a string file path) of the file to add.</Parameter>
			<Parameter Name="imgnum" Type="Real" Optional="false">Use to indicate the number of sub-images (1 for a single image or for a *.gif).</Parameter>
			<Parameter Name="removeback" Type="Bool" Optional="false">Indicates whether to make all pixels with the background colour (left-bottom pixel) transparent.</Parameter>
			<Parameter Name="smooth" Type="Bool" Optional="false">Indicates whether to smooth the edges if transparent.</Parameter>
			<Parameter Name="xorig" Type="Real" Optional="false">Indicate the x position of the origin in the sprite.</Parameter>
			<Parameter Name="yorig" Type="Real" Optional="false">Indicate the y position of the origin in the sprite.</Parameter>
		</Function>
		<Function Name="sprite_add_ext" Deprecated="false" ReturnType="Asset.GMSprite" Pure="false">
			<Description>With this function you can asynchronously add an image as a sprite, loading it from an external source where the image file to be loaded should always be in either *.png, *.gif, *.jpg/jpeg or *.json format (*json files are used for loading skeleton animation sprites made with Spine). The function returns the new sprite index which must then be used in all further code that relates to the sprite. This function will generate an Image Loaded asynchronous event when the sprite has been loaded. See this page for more information.</Description>
			<Parameter Name="fname" Type="String" Optional="false">The name (a string file path) of the file to add.</Parameter>
			<Parameter Name="imgnum" Type="Real" Optional="false">Use to indicate the number of sub-images (1 for a single image or for a *.gif).</Parameter>			
			<Parameter Name="xorig" Type="Real" Optional="false">Indicate the x position of the origin in the sprite.</Parameter>
			<Parameter Name="yorig" Type="Real" Optional="false">Indicate the y position of the origin in the sprite.</Parameter>
			<Parameter Name="prefetch" Type="Bool" Optional="false">Indicates whether the sprite should be loaded to GPU memory.</Parameter>
		</Function>
		<Function Name="sprite_add_from_surface" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function works in exactly the same way as sprite_create_from_surface() only instead of creating a new sprite from the area of the indexed surface that you select, it adds the defined area of the surface as a new sub-image to a previously created sprite (this means that you cannot add it directly to a sprite from the resource tree, but rather only to one previously created from a surface, or one that has been duplicated from a resource sprite using sprite_duplicate()).</Description>
			<Parameter Name="index" Type="Asset.GMSprite" Optional="false">The index of the sprite to add the new image to.</Parameter>
			<Parameter Name="surface" Type="Id.Surface" Optional="false">The index of the surface from which the get the image.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position to copy from.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position to copy from.</Parameter>
			<Parameter Name="w" Type="Real" Optional="false">The width of the area to be copied (from the x position).</Parameter>
			<Parameter Name="h" Type="Real" Optional="false">The height of the area to be copied (from the y position).</Parameter>
			<Parameter Name="removeback" Type="Bool" Optional="false">Indicates whether to make all pixels with the background colour (left-bottom pixel) transparent.</Parameter>
			<Parameter Name="smooth" Type="Bool" Optional="false">Indicates whether to smooth the edges.</Parameter>
		</Function>
		<Function Name="sprite_assign" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function takes two previously created (or included) sprite indexes, and copies the image from one to the other. In this way you can copy (or &quot;clone&quot;) one sprite into another index. Note that you cannot copy to a game resource. You have to have created the sprite to be copied to previously using the sprite_add() or sprite_duplicate() functions.</Description>
			<Parameter Name="index" Type="Asset.GMSprite" Optional="false">The index of the sprite to be copied to (ie: overwritten).</Parameter>
			<Parameter Name="sprite" Type="Asset.GMSprite" Optional="false">The sprite to be copied from.</Parameter>
		</Function>
		<Function Name="sprite_collision_mask" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the properties of the collision mask that a sprite should have. If you select either automatic (0) or full image (1) as the bounding box mode then the individual bounding box values can be set to 0. However for a user defined mask (2) you will have to set these values. The different bounding box values are always relative to the top left corner of the sprite (irrespective of the x and y origin) which is considered position (0, 0).</Description>
			<Parameter Name="ind" Type="Asset.GMSprite" Optional="false">The index of the sprite to set the bounding box of.</Parameter>
			<Parameter Name="sepmasks" Type="Bool" Optional="false">Whether to create collision masks for each sub-image of the sprite (true), or one mask for all (false).</Parameter>
			<Parameter Name="bboxmode" Type="Real" Optional="false">What kind of bounding box to use. 0 = automatic, 1 = full image, 2 = user defined.</Parameter>
			<Parameter Name="bbleft" Type="Real" Optional="false">The maximum left position of the bounding box.</Parameter>
			<Parameter Name="bbtop" Type="Real" Optional="false">The maximum top position of the bounding box.</Parameter>
			<Parameter Name="bbright" Type="Real" Optional="false">The maximum right position of the bounding box.</Parameter>
			<Parameter Name="bbbottom" Type="Real" Optional="false">The maximum bottom position of the bounding box.</Parameter>
			<Parameter Name="kind" Type="Constant.CollisionMask" Optional="false">The kind of mask, a constant (see the table in the description).</Parameter>
			<Parameter Name="tolerance" Type="Real" Optional="false">Indicates the tolerance in the transparency value (0=no tolerance, 255=full tolerance).</Parameter>
		</Function>
		<Function Name="sprite_create_from_surface" Deprecated="false" ReturnType="Asset.GMSprite" Pure="false">
			<Description>With this function you can create a sprite from a previously initialised surface (the surface index ID value is returned when you create the surface using surface_create()). The x and y coordinates that you then input in the function should be relative to the (0,0) position of the surface (the top left corner) and not the game window (nor the view if you have one active). The width and height arguments are in pixels and define the width and height of the part of the surface to use.</Description>
			<Parameter Name="index" Type="Id.Surface" Optional="false">The index of the surface to create from.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position to copy from.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position to copy from.</Parameter>
			<Parameter Name="w" Type="Real" Optional="false">The width of the area to be copied (from the x position).</Parameter>
			<Parameter Name="h" Type="Real" Optional="false">The height of the area to be copied (from the y position).</Parameter>
			<Parameter Name="removeback" Type="Bool" Optional="false">Indicates whether to make all pixels with the background colour (left-bottom pixel) transparent.</Parameter>
			<Parameter Name="smooth" Type="Bool" Optional="false">Indicates whether to smooth the edges.</Parameter>
			<Parameter Name="xorig" Type="Real" Optional="false">Indicates the x position of the origin in the sprite.</Parameter>
			<Parameter Name="yorig" Type="Real" Optional="false">Indicates the y position of the origin in the sprite.</Parameter>
		</Function>
		<Function Name="sprite_delete" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will delete a sprite from the game, freeing any memory that was reserved for it. This is a very important function for those moments when you need to create and change sprites from external sources (like loading a sprite from a file with sprite_add(), or duplicating a sprite using sprite_duplicate()) and should always be used to remove those assets that are no longer needed by a game, or to clear an indexed asset from a variable before re-assigning another asset to that variable. This cannot be used to delete sprites that are included in the game as part of the assets in the Asset Browser.</Description>
			<Parameter Name="index" Type="Asset.GMSprite" Optional="false">The index of the sprite to be deleted.</Parameter>
		</Function>
		<Function Name="sprite_duplicate" Deprecated="false" ReturnType="Asset.GMSprite" Pure="false">
			<Description>This function will return the index of a newly created sprite that is a duplicate (copy) of the one input as the &quot;index&quot; argument. If the function fails, -1 is returned. This function must be used to copy any sprites from the original assets before any transformations can be done on them. For example, if you wish to change the bounding box for a sprite, or set its alpha from another sprite, you must first duplicate it, then perform the operation on the duplicated sprite and use that. A duplicated sprite will be places on its own unique texture page when created, meaning that duplicating multiple sprites will create multiple texture pages and have an impact on performance, so use this function only when necessary.</Description>
			<Parameter Name="index" Type="Asset.GMSprite" Optional="false">The index of the sprite to duplicate.</Parameter>
		</Function>
		<Function Name="sprite_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function returns whether a sprite with the specified index exists or not in the project being run.</Description>
			<Parameter Name="index" Type="Asset.GMSprite" Optional="false">The index of the sprite to check.</Parameter>
		</Function>
		<Function Name="sprite_flush" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can remove the given texture page for the given sprite from texture memory. You supply the sprite index (as defined when creating the sprite resource) and the texture page it is assigned to will be removed from texture memory. Note that if the texture page is used elsewhere in the room (by another instance sprite or a background, etc...) you may get a minor performance hit as the page is immediately reloaded, so care should be taken when using this function. Note that the function will return -1 if flush is not supported for the chosen resource, or it will return 0 if all worked correctly.</Description>
			<Parameter Name="ind" Type="String" Optional="false">The index (resource name) of the sprite asset to flush</Parameter>
		</Function>
		<Function Name="sprite_flush_multi" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can remove the any number of texture pages for the given sprites from texture memory. You supply the sprite indices as an array and the texture pages they are assigned to will be removed from texture memory. Note that if one of the texture pages is used elsewhere in the room (by another instance sprite or a background, etc...) you may get a minor performance hit as the page is immediately reloaded back into memory again, so care should be taken when using this function. Note that the function will return -1 if flush is not supported for the chosen resources, or it will return 0 if all worked correctly.</Description>
			<Parameter Name="array" Type="Array" Optional="false">Array with the sprite indices to flush</Parameter>
		</Function>
		<Function Name="sprite_merge" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will merge the sprite indexed in argument 1 (&quot;ind2&quot;) with that which is indexed in argument 0 (&quot;ind1&quot;). The images themselves are NOT merged together, but rather the image indices are merged, with the sub images from sprite &quot;ind2&quot; appended onto those of sprite &quot;ind1&quot;, ie: they are added on at the end. Note that if the sprites are different sizes, then the appended sprites are stretched to fit the image size for &quot;ind1&quot;.</Description>
			<Parameter Name="ind1" Type="Asset.GMSprite" Optional="false">The index of the sprite to merge.</Parameter>
			<Parameter Name="ind2" Type="Asset.GMSprite" Optional="false">The index of the sprite that ind1 is to be merged with.</Parameter>
		</Function>
		<Function Name="sprite_nineslice_create" Deprecated="false" ReturnType="Struct" Pure="false">
			<Description>Nine Slicing is a technique used to scale rectangular images for preserving details, making them retain their original form after scaling. See this page for information on Nine Slice.</Description>
		</Function>
		<Function Name="sprite_prefetch" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>This function can be used to prefetch (place into texture memory) a texture page with the given sprite. You supply the sprite index as defined when you created the sprite asset, and the texture page it is on will be loaded into memory. Note that the function will return -1 if prefetch is not supported for the chosen resource or the target platform is HTML5, or it will return 0 if all worked correctly.</Description>
			<Parameter Name="ind" Type="Asset.GMSprite" Optional="false">The sprite index to fetch</Parameter>
		</Function>
		<Function Name="sprite_prefetch_multi" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>This function can be used to prefetch (place into texture memory) a number of texture pages that contain the sprites given. You supply an array populated with the sprite indices (as defined when you created the sprite asset) and the texture pages that they are on will be loaded into memory. Note that the function will return -1 if prefetch is not supported for the chosen resource or the target platform is HTML5, or it will return 0 if all worked correctly.</Description>
			<Parameter Name="array" Type="Array" Optional="false">Array with the sprite indices to fetch</Parameter>
		</Function>
		<Function Name="sprite_replace" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function works in almost the exact same manner as sprite_add(), only instead of returning the index of the sprite you are importing, it overwrites a previously created sprite index. When using this function you should use a sprite index that has been created and stored in a variable using other functions like sprite_add() or sprite_create_from_surface(), or even sprite_duplicate(), rather than a resource tree sprite asset. You can replace a sprite from the game assets using this function, but doing so means that you will lose the reference ID for the sprite that you are replacing, regardless of whether you call game_restart() or not, and so is not recommended. Regardless of the sprite being replaced, this function will create a new texture page for the sprite and so care should be taken when using it as it may adversely affect performance by increasing the number of required texture swaps for rendering.</Description>
			<Parameter Name="ind" Type="Asset.GMSprite" Optional="false">The index of the sprite to permanently replace.</Parameter>
			<Parameter Name="fname" Type="String" Optional="false">The filename of the image to make the new sprite.</Parameter>
			<Parameter Name="imgnumb" Type="Real" Optional="false">The number of frames the sprite will be cut up into horizontally. 1 = one single image / *.gif.</Parameter>
			<Parameter Name="removeback" Type="Bool" Optional="false">Indicates whether to make all pixels with the background colour (left-bottom pixel) transparent.</Parameter>
			<Parameter Name="smooth" Type="Bool" Optional="false">Indicates whether to smooth the edges.</Parameter>
			<Parameter Name="xorig" Type="Real" Optional="false">The x coordinate of the origin, relative to the sprite&apos;s top left corner.</Parameter>
			<Parameter Name="yorig" Type="Real" Optional="false">The y coordinate of the origin, relative to the sprite&apos;s top left corner.</Parameter>
		</Function>
		<Function Name="sprite_save" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to save any sub-image of a sprite to disc, giving it the specified filename. The sprite must have been added at runtime (you cannot save sprites added through the IDE) and the file must be saved with a *.png extension.</Description>
			<Parameter Name="ind" Type="Asset.GMSprite" Optional="false">The index of the sprite to save.</Parameter>
			<Parameter Name="subimg" Type="Real" Optional="false">The sub-image of the sprite to save.</Parameter>
			<Parameter Name="fname" Type="String" Optional="false">The filename for the saved sprite.</Parameter>
		</Function>
		<Function Name="sprite_save_strip" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will create a strip image from all the sub-images in a sprite, saving it to disc with the specified filename. The sprite must have been added at runtime (you cannot save sprites added through the IDE) and the file must be saved with a *.png extension.</Description>
			<Parameter Name="ind" Type="Asset.GMSprite" Optional="false">The index of the sprite to change the transparency map of.</Parameter>
			<Parameter Name="filename" Type="String" Optional="false">The filename for the saved sprite strip.</Parameter>
		</Function>
		<Function Name="sprite_set_alpha_from_sprite" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function uses the value/saturation of one sprite and multiplies it with the alpha of the target sprite. Ideally the sprite being used to generate the new alpha map should be grey-scale, with the white areas having an equivalent alpha value of 1 (opaque), the black areas being equivalent to alpha 0 (transparent), and the grey areas being an alpha in between 0 and 1. The sprite that you are setting the alpha of cannot be a permanent resource, nor can the sprite you use to set the alpha, as this will give an error. This means that you must create two completely new sprites &quot;on the fly&quot; in some way for the function to work correctly. This can be achieved by using surfaces, or by creating a sprite from the screen (the code example below shows how the effect can be achieved with surfaces).</Description>
			<Parameter Name="ind" Type="Asset.GMSprite" Optional="false">The index of the sprite to change the transparency map of.</Parameter>
			<Parameter Name="spr" Type="Asset.GMSprite" Optional="false">The index of the sprite to take the transparency map data from.</Parameter>
		</Function>
		<Function Name="sprite_set_bbox" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set the bounding box values for a sprite. You supply the sprite index to use and then the left, top, right and bottom values for the bounding box positions. The positions are absolute values, where the (0, 0) position corresponds to the top left corner of the sprite, regardless of the offset for the sprite, any &quot;empty&quot; pixels the sprite may have, or where it is being drawn in the room.</Description>
			<Parameter Name="ind" Type="Asset.GMSprite" Optional="false">The index of the sprite to set the bounding box on.</Parameter>
			<Parameter Name="left" Type="Real" Optional="false">The left side of the bounding box</Parameter>
			<Parameter Name="top" Type="Real" Optional="false">The top of the bounding box.</Parameter>
			<Parameter Name="right" Type="Real" Optional="false">The right side of the bounding box</Parameter>
			<Parameter Name="bottom" Type="Real" Optional="false">The bottom of the bounding box.</Parameter>
		</Function>
		<Function Name="sprite_set_bbox_mode" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set the bounding box mode for a sprite. You supply the sprite index and the mode to use, which should be one of the following constants:</Description>
			<Parameter Name="ind" Type="Asset.GMSprite" Optional="false">The index of the sprite to change the mode of.</Parameter>
			<Parameter Name="mode" Type="Constant.BBoxMode" Optional="false">The mode to set (a constant).</Parameter>
		</Function>
		<Function Name="sprite_set_cache_size" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>When performing image blending, HTML5 cannot do it dynamically in the same way an executable could be performed. Therefore GameMaker has to temporarily save a blended copy of the image and load it in. This function sets how many blended copies of the given sprite can be cached before old ones are overwritten. Default is 4. This is applied to all sub-images of the sprite.</Description>
			<Parameter Name="ind" Type="Asset.GMSprite" Optional="false">The index of the sprite to change the cache size of.</Parameter>
			<Parameter Name="max" Type="Real" Optional="false">The maximum number of cached copies of the sprite that can be stored.</Parameter>
		</Function>
		<Function Name="sprite_set_cache_size_ext" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>When performing image blending, HTML5 cannot do it dynamically in the same way an executable could be performed. Therefore GameMaker has to temporarily save a blended copy of the image and load it in. This function sets how many blended copies of the given sprite can be cached before old ones are overwritten. Default is 4. This is applied to one single given sub-image of the sprite.</Description>
			<Parameter Name="ind" Type="Asset.GMSprite" Optional="false">The index of the sprite to change the cache size of.</Parameter>
			<Parameter Name="index" Type="Real" Optional="false">The sub-image of ind to change the cache size of.</Parameter>
			<Parameter Name="max" Type="Real" Optional="false">The maximum number of cached copies of the sprite that can be stored.</Parameter>
		</Function>
		<Function Name="sprite_set_nineslice" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function is used to apply a Nine Slice struct to a sprite. You supply the sprite index and the Nine Slice struct to apply, which can be retrieved using sprite_nineslice_create() or sprite_get_nineslice().</Description>
			<Parameter Name="ind" Type="Asset.GMSprite" Optional="false">The index of the sprite to modify</Parameter>
			<Parameter Name="nineslice" Type="Struct.NineSlice" Optional="false">The Nine Slice struct to apply</Parameter>
		</Function>
		<Function Name="sprite_set_offset" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set the x and y origin of a sprite, and takes relative values based on the (0,0) position being the upper left corner of the sprite. The following image illustrates this:</Description>
			<Parameter Name="ind" Type="Asset.GMSprite" Optional="false">The index of the sprite to change the offset of.</Parameter>
			<Parameter Name="xoff" Type="Real" Optional="false">The x position of the origin.</Parameter>
			<Parameter Name="yoff" Type="Real" Optional="false">The y position of the origin.</Parameter>
		</Function>
		<Function Name="sprite_set_speed" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>This function can be used to set the base animation speed and type as for the sprite resource. This is normally set in the Sprite Editor, but there may be moments when you are required to set this manually for a given sprite resource. You need to supply the sprite index to set, the animation speed and the type of animation speed to apply. The animation speed type can be any one of the following constants:</Description>
			<Parameter Name="index" Type="Asset.GMSprite" Optional="false">The index of the sprite to get the animation type of</Parameter>
			<Parameter Name="speed" Type="Real" Optional="false" />
			<Parameter Name="type" Type="Constant.SpriteSpeed" Optional="false" />
		</Function>
		<Function Name="tileset_get_name" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will return the name as a string of the specified tile set. This name is the one that has been specified for the tile set in the Asset Browser of the main GameMaker window. Please note that this is only a string and cannot be used to reference the tile set directly - for that you would need the tile set index. You can, however, use this string to get the tile set index using the returned string along with the function asset_get_index().</Description>
			<Parameter Name="index" Type="Asset.GMTileSet" Optional="false">The index of the tile set to get the name of.</Parameter>
		</Function>
		<Function Name="tileset_get_texture" Deprecated="false" ReturnType="Id.Texture" Pure="true">
			<Description>This function returns a special pointer for the tile set texture page. This value can then be used in other draw functions, particularly in the 2D primitive functions, as well as the Shader functions. You can get more information about the returned texture page using the different texture_ functions found here.</Description>
			<Parameter Name="tileset" Type="Asset.GMTileSet" Optional="false">The index of the tile set to use.</Parameter>
		</Function>
		<Function Name="tileset_get_uvs" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function returns an array with the UV coordinates and other data for the texture of the given tile set on the texture page. The function returns an array with the following 8 elements:</Description>
			<Parameter Name="tileset" Type="Asset.GMTileSet" Optional="false">The index of the tile set to use.</Parameter>
		</Function>
		<Function Name="tileset_get_info" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function is used to retrieve information for the given tileset. You supply a tileset index and the function returns a struct.</Description>
			<Parameter Name="index" Type="Asset.GMTileSet" Optional="false">The index of the tile set to get the name of.</Parameter>
		</Function>
		<Function Name="timeline_add" Deprecated="false" ReturnType="Asset.GMTimeline" Pure="false">
			<Description>With this function you can add a new (empty) time line into your game. the function returns the index of this new time line which should be stored in a variable for use in all further function calls that involve this new time line. You should also be sure to use the function timeline_delete() whenever you no longer wish to use the time line (like at the end of the room) so as to prevent any possible memory leaks that could slow down or crash your game. To add moments to a timeline created in this way, see the function timeline_moment_add_script().</Description>
		</Function>
		<Function Name="timeline_clear" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can clear a specific time line of &quot;moments&quot;, removing all codes and actions for that time line and leaving it empty.</Description>
			<Parameter Name="ind" Type="Asset.GMTimeline" Optional="false">The index of the time line to clear.</Parameter>
		</Function>
		<Function Name="timeline_delete" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can delete any time line from your game. if this time line was created in the GameMaker Asset Browser, please note that it is removed completely from the game and trying to call the indexed time line again after using this function will cause an error. If the time line was created dynamically using the timeline_add() function, then this function should be used the moment that the time line is no longer needed to prevent any memory leaks that could slow down (and eventually crash) your game.</Description>
			<Parameter Name="ind" Type="Asset.GMTimeline" Optional="false">The index of the time line to delete.</Parameter>
		</Function>
		<Function Name="timeline_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check and see whether a time line exists (returns true) or not (returns false). This is particularly useful when creating Timelines dynamically using the timeline_add() function, but you should note that if you search for an uninitialised variable (that would otherwise be assigned to a time line&apos;s index) an error will be thrown.</Description>
			<Parameter Name="ind" Type="Asset.GMTimeline" Optional="false">The index of the time line to check for.</Parameter>
		</Function>
		<Function Name="timeline_get_name" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function can be used to get the name of a time line as a string. if the time line has been created dynamically using the timeline_add() function, the name returned will have the format &quot;__newtimelineN&quot; where &quot;N&quot; is the number of the time line (starting from 0). Please note that this is only a string and cannot be used to reference the timeline directly - for that you would need the timeline index. You can, however, use this string to get the timeline index using the returned string along with the function asset_get_index().</Description>
			<Parameter Name="ind" Type="Asset.GMTimeline" Optional="false">The index of the time line to check the name of.</Parameter>
		</Function>
		<Function Name="timeline_max_moment" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the value of the moment in which the timeline performs its final action. So, if you have a timeline with 8 different actions placed 20 moments apart, this function would return the moment value of the last action in that timeline, which would be 160. This function is a good way to test whether a timeline has passed the last active moment when running, since the timeline position will continue incrementing every step of the game whether there are further actions or not.</Description>
			<Parameter Name="ind" Type="Asset.GMTimeline" Optional="false">The index of the timeline to get the last moment of.</Parameter>
		</Function>
		<Function Name="timeline_moment_add_script" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can dynamically add a script function to Timelines at any given &quot;moment&quot; within that time line, where a &quot;moment&quot; is the equivalent of one game tick (or step). In this way you can create a new time line using the timeline_add() function and add different behaviours at any point, or simply modify a previously created time line resource with new behaviours. Note that the function cannot require any additional arguments when using this function, and if you use it to modify a Timeline asset present in the Asset Browser, then all instances that use this timeline will be affected, and the change will last until the end of the game (calling game_restart() will not reset the change either).</Description>
			<Parameter Name="ind" Type="Asset.GMTimeline" Optional="false">The index of the time line to add a moment to.</Parameter>
			<Parameter Name="step" Type="Real" Optional="false">The moment (step) to add to.</Parameter>
			<Parameter Name="script" Type="Asset.GMScript,Function" Optional="false">The index of the script function to add into the moment.</Parameter>
		</Function>
		<Function Name="timeline_moment_clear" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can clear a specific moment of any previously defined time line of all codes and actions.</Description>
			<Parameter Name="ind" Type="Asset.GMTimeline" Optional="false">The index of the time line to clear.</Parameter>
			<Parameter Name="step" Type="Real" Optional="false">The moment to clear.</Parameter>
		</Function>
		<Function Name="timeline_size" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the total number of active moments for a timeline (an &quot;active&quot; moment is one which has code or DnD„¢ added to it). This can be handy when creating dynamic timelines using the timeline_moment_add_script() and timeline_moment_clear() functions, as you can check to see if a given timeline has the correct number of active moments or none at all.</Description>
			<Parameter Name="ind" Type="Asset.GMTimeline" Optional="false">The index of the timeline get the information from.</Parameter>
		</Function>
		<Function Name="achievement_available" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will return true if the user is currently connected to the internet and the chosen leaderboard and achievement system is available, otherwise it will return false.</Description>
		</Function>
		<Function Name="achievement_get_challenges" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will send a request to the server for information on all current challenges and will trigger a callback Social Asynchronous Event which contains the async_load map populated with the relevant key/value pairs. The id key of this DS Map is used to identify the correct callback (there can be more than one trigger function for any given asynchronous event), and will be paired with the constant achievement_challenge_list_received as well as a number of other key/value pairs for each challenge. The exact contents of the map are shown below:</Description>
		</Function>
		<Function Name="achievement_get_pic" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will send a request to the server for the image of a player or a friend and will trigger a callback Social Asynchronous Event which contains the async_load map populated with the relevant key/value pairs. The id key of this DS Map is used to identify the correct callback (there can be more than one trigger function for any given asynchronous event), and will be paired with the constant achievement_pic_loaded as well as a number of other key/value pairs. The exact contents of the map are shown below:</Description>
			<Parameter Name="char" Type="Real" Optional="false">The id of the person to get the image of (either from a friends list or a leaderboard)</Parameter>
		</Function>
		<Function Name="achievement_increment" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Games can have achievements with no completion value and so you can use this function to increment those achievement by a given amount. On Android, you send the ID of the achievement as a string (this is the unique achievement ID that got assigned when you set up the achievement), while on all other platforms you supply the defined achievement name as a string, and then you give the actual achievement value to increment by.</Description>
			<Parameter Name="name" Type="String" Optional="false">The name/id of the achievement.</Parameter>
			<Parameter Name="value" Type="Any" Optional="false">The value to be sent as an increment.</Parameter>
		</Function>
		<Function Name="achievement_load_friends" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will send a request to the server for information on all the logged in users friends and will trigger a callback Social Asynchronous Event which contains the async_load map populated with the relevant key/value pairs. The id key of this DS Map is used to identify the correct callback (there can be more than one trigger function for any given asynchronous event), and will be paired with the constant achievement_friends_info as well as a number of other key/value pairs for each friend. The exact contents of the map are shown below:</Description>
		</Function>
		<Function Name="achievement_load_leaderboard" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>below)</Description>
			<Parameter Name="ident" Type="String" Optional="false">The unique ID of the leaderboard as shown on the developer dashboard.</Parameter>
			<Parameter Name="minindex" Type="Real" Optional="false">The starting index value to get the leaderboard data from.</Parameter>
			<Parameter Name="maxindex" Type="Real" Optional="false">The maximum index value to get the leaderboard data from.</Parameter>
			<Parameter Name="filter" Type="String" Optional="false">Whether to filter the results to those that are on your friends list or to all players (see the Description below)</Parameter>
		</Function>
		<Function Name="achievement_load_progress" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will send a request to the server for information on all available achievements. It will trigger a callback Social Asynchronous Event which contains the async_load map populated with the relevant key/value pairs. The id key of this DS Map is used to identify the correct callback (there can be more than one trigger function for any given asynchronous event), and will be paired with the constant achievement_achievement_info as well as a number of other key/value pairs for each player. The exact contents of the map are shown below:</Description>
		</Function>
		<Function Name="achievement_login" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function logs the user into appropriate leaderboard and achievement service. If the service is not available, the user is logged into a &quot;pretend&quot; game centre and all achievements and scores are stored on the device so that when the actual service is available, these details can be uploaded. The function will trigger a callback Social Asynchronous Event which contains the async_load map populated with the relevant key/value pairs. The id key of this DS Map is used to identify the correct callback (there can be more than one trigger function for any given asynchronous event), and will be paired with the constant achievement_our_info as well as a number of other key/value pairs for each challenge. The exact contents of the map are shown below:</Description>
		</Function>
		<Function Name="achievement_login_status" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function is currently only useful for Google Play on the Android platform. It will check to see if the user is already logged into Google services, in which case it will return true, or not, returning false. If it returns true there is no need to call the achievement_login() function.</Description>
		</Function>
		<Function Name="achievement_logout" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function logs the user out of the chosen leaderboard and achievement service. This will stop all further achievements and scores from being recorded.</Description>
		</Function>
		<Function Name="achievement_post" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>You can use this function to send your achievements to the chosen leaderboard and achievement service. On Android you will need the the ID of the achievement as a string (this is the unique achievement ID that got assigned when you set up the achievement), while on all other platforms you supply the achievement name as a string, and then you give the percentage that you have completed towards getting the achievement (0 - None, 100 - Completed). The function will trigger a Social Asynchronous Event where the returned async_load DS map will have the following key/value pairs:</Description>
			<Parameter Name="achievement" Type="String" Optional="false">The name/ID of the achievement.</Parameter>
			<Parameter Name="percent" Type="Real" Optional="false">The percentage of the achievement completed.</Parameter>
		</Function>
		<Function Name="achievement_post_score" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>You can use this function to send your score to the chosen leaderboard and achievement service. On Android, you send the ID of the score table as a string (this is the unique leaderboard ID that got assigned when you set up the leaderboard), while on all other platforms you supply the defined leaderboard name as a string, and then you give the actual score value. The function will trigger a Social Asynchronous Event where the returned async_load DS map will have the following key/value pairs:</Description>
			<Parameter Name="leaderboard" Type="String" Optional="false">The name/ID of the leaderboard.</Parameter>
			<Parameter Name="score" Type="Real" Optional="false">The score to be sent.</Parameter>
		</Function>
		<Function Name="achievement_reset" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will reset all achievements back to their initial values for the game. This function is provided as a debug function and it is not recommended that you permit the end-user to do this in your games.</Description>
		</Function>
		<Function Name="achievement_send_challenge" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will send a challenge across the network to the chosen player. You can get the playerid using the achievement_load_friends() or the achievement_load_leaderboard() functions and you must also supply the challengeid which is the unique value given the challenge when you created it on your iTunes Connect or Google Play dashboard. You must also supply a score, and a short text message as well as set the challenge type. This can be one of the following constants:</Description>
			<Parameter Name="playerid" Type="Real" Optional="false">The unique ID of the player to challenge.</Parameter>
			<Parameter Name="challengeid" Type="Real" Optional="false">The unique challenge ID (as found on the provider dashboard).</Parameter>
			<Parameter Name="score" Type="Real" Optional="false">The score to beat.</Parameter>
			<Parameter Name="type" Type="Real" Optional="false">the type of challenge to be issued - one of two constants given below.</Parameter>
			<Parameter Name="message" Type="String" Optional="false">The message to attach to the challenge.</Parameter>
		</Function>
		<Function Name="achievement_show_achievements" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will open the achievements page for the chosen platform. Please note that this is an asynchronous function, ie: your game will continue to run in the background while the achievements page is being shown. As such, you should be careful where you use this and make sure to pause the game or only permit it to be shown in areas of your game where it will not interfere with the game-play.</Description>
		</Function>
		<Function Name="achievement_show_challenge_notifications" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can show, or suppress, the various different &quot;toast&quot; pop-up notifications relating to challenges. When the arguments are set to true these messages will appear, informing the player of any local or remote challenges received as well as those challenges that have been completed, while setting them to false will suppress these notifications.</Description>
			<Parameter Name="receive" Type="Bool" Optional="false">Show challenges received pop-up (true) or not (false).         </Parameter>
			<Parameter Name="local" Type="Bool" Optional="false">Show completed local challenges pop-up (true) or not (false).         </Parameter>
			<Parameter Name="remote" Type="Bool" Optional="false">Show completed remote challenges pop-up (true) or not (false).         </Parameter>
		</Function>
		<Function Name="achievement_show_leaderboards" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will open the leaderboards page for the chosen platform. Please note that this is an asynchronous function, ie: your game will continue to run in the background while the leaderboards page is being shown. As such, you should be careful where you use this and make sure to pause the game or only permit it to be shown in areas of your game where it will not interfere with the game-play.</Description>
		</Function>
		<Function Name="cloud_file_save" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>This function will commit a file to the chosen cloud service for storage. The function will return a unique id value that should then be used in the appropriate asynchronous event to identify the DS map that is returned as a &quot;call back&quot; from the cloud service. The file should contain all the information that you need to save for your game as you can only store one single &quot;data blob&quot; to the cloud, and running this function again will overwrite any previously stored values (as will using the cloud_string_save() function). The description should be a short string of information that describes the save, eg: &quot;Level2, Stage2&quot;.</Description>
			<Parameter Name="string" Type="String" Optional="false">The file to be uploaded (as a string).</Parameter>
			<Parameter Name="description" Type="String" Optional="false">A brief description of the data being stored.</Parameter>
		</Function>
		<Function Name="cloud_string_save" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will commit a string to the chosen cloud service for storage. The function will return a unique id value that should then be used in the appropriate asynchronous event to identify the DS map that is returned as a &quot;call back&quot; from the cloud service. The string should contain all the information that you need to save for your game as you can only store one single &quot;data blob&quot; to the cloud, and running this function again will overwrite any previously stored values (as will using the cloud_file_save() function). The description should be a short string of information that describes the save, eg: &quot;Level2, Stage2&quot;.</Description>
			<Parameter Name="string" Type="String" Optional="false">The data string to be uploaded.</Parameter>
			<Parameter Name="description" Type="String" Optional="false">A brief description of the data being stored.</Parameter>
		</Function>
		<Function Name="cloud_synchronise" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function would normally be called at the start of a new game and is used to retrieve the current status of the cloud service at game start up. The function returns a unique id value which would then be used in the Asynchronous Cloud Event to retrieve the relevant information from the DS map that is created.</Description>
		</Function>
		<Function Name="get_integer_async" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function opens a window and displays message as well as a space for the user to input a value (which will contain the supplied default value to start with). This is an asynchronous function, and as such GameMaker does not block the device it is being run on while waiting for an answer, but rather keeps on running events as normal. Once the user has typed out their string and pressed the &quot;Okay&quot; button, an asynchronous Dialog event is triggered which, for the duration of that event only, will have a DS map stored in the variable async_load.</Description>
			<Parameter Name="string" Type="String" Optional="false">The message to show in the dialog.</Parameter>
			<Parameter Name="default" Type="Real" Optional="false">The default value.</Parameter>
		</Function>
		<Function Name="get_login_async" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>This function opens a window that asks the user to input a username and password. These arguments can be set as an empty string or you can store previously entered values to use if you wish. This is an asynchronous function, and as such GameMaker does not block the device it is being run on while waiting for an answer, but rather keeps on running events as normal. Once the user has input the details and pressed the &quot;Okay&quot; button, an asynchronous User Interaction event is triggered which, for the duration of that event only, will have a DS map stored in the variable async_load.</Description>
			<Parameter Name="username" Type="String" Optional="false">The default user name</Parameter>
			<Parameter Name="password" Type="String" Optional="false">The default password</Parameter>
		</Function>
		<Function Name="get_string_async" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function opens a window and displays message as well as a space for the user to input a string (which will contain the supplied default string to start with). This is an asynchronous function, and as such GameMaker does not block the device it is being run on while waiting for an answer, but rather keeps on running events as normal. Once the user has typed out their string and pressed the &quot;Okay&quot; button, an asynchronous Dialog event is triggered which, for the duration of that event only, will have a DS map stored in the variable async_load.</Description>
			<Parameter Name="string" Type="String" Optional="false">The message to show in the dialog.</Parameter>
			<Parameter Name="default" Type="String" Optional="false">The default string.</Parameter>
		</Function>
		<Function Name="shop_leave_rating" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function opens up an OS dependent dialog where you can ask the user to post a rating or comment to a particular page. You can define the text that is to appear in the dialogue, as well as the text you wish to appear on the two buttons and the URL where the comment has to be posted.</Description>
			<Parameter Name="text" Type="String" Optional="false">Text that appears on the dialog.</Parameter>
			<Parameter Name="yes_string" Type="String" Optional="false">Text that appears on the &quot;yes&quot; button.</Parameter>
			<Parameter Name="no_string" Type="String" Optional="false">Text that appears on the &quot;no&quot; button.</Parameter>
			<Parameter Name="url" Type="String" Optional="false">The full URL where the comment has to be sent.</Parameter>
		</Function>
		<Function Name="show_message_async" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>This function opens a window and displays the message you define in the function to the user. This is an asynchronous function, and as such GameMaker does not block the device it is being run on while waiting for an answer, but rather keeps on running events as normal. Once the user has pressed the &quot;Okay&quot; button, an asynchronous Dialog event is triggered which, for the duration of that event only, will have a ds_map stored in the variable async_load.</Description>
			<Parameter Name="string" Type="Any" Optional="false">The message to show to the user.</Parameter>
		</Function>
		<Function Name="show_question_async" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>This function opens a window and displays the question you define in the function to the user. This is an asynchronous function, and as such GameMaker does not block the device it is being run on while waiting for an answer, but rather keeps on running events as normal. The function has two buttons that show &quot;Yes&quot; and &quot;No&quot;, and once the user has pressed one, an asynchronous Dialog event is triggered which, for the duration of that event only, will have a DS map stored in the variable async_load.</Description>
			<Parameter Name="string" Type="String" Optional="false">The question to ask to the user.</Parameter>
		</Function>
		<Function Name="http_get" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function, you connect to the specified URL in order to retrieve information. As this is an asynchronous function, GameMaker will not block while waiting for a reply, but will keep on running unless it gets callback information. This information will be in the form of a string and will trigger an Async Event in any instance that has one defined in their object properties. You should also note that HTTP request parameters (the bits sometimes &quot;tacked on&quot; to the end of a URL when you submit a form on a web page) are perfectly acceptable when using this function, for example:</Description>
			<Parameter Name="url" Type="String" Optional="false">The web address of the server that you wish to get information from</Parameter>
		</Function>
		<Function Name="http_get_file" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function, you can connect to the specified URL in order to retrieve information in the form of a file. As this is an asynchronous function, GameMaker will not block while waiting for a reply, but will keep on running unless it gets callback information. This information will be in the form of a string and will trigger an Async Event in any instance that has one defined in their object properties.</Description>
			<Parameter Name="url" Type="String" Optional="false">The web address of the server that you wish to get file from</Parameter>
			<Parameter Name="local_target" Type="String" Optional="false">The local storage path to save the file to</Parameter>
		</Function>
		<Function Name="http_get_request_crossorigin" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function can be used to get the cross-origin type set for HTML5 games and will return a string (on all other platforms an empty string &quot;&quot; will be returned).</Description>
		</Function>
		<Function Name="http_post_string" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>In computing, a post request is used when the client needs to send data to the server as part of the retrieval request, such as when uploading a file or submitting a completed form, and the same is true of this function in GameMaker. In contrast to the http_get() request method where only a URL is sent to the server, http_post_string() also includes a string that is sent to the server and may result in the creation of a new resource or the update of an existing resource or both. It should be noted that HTTP request parameters (the bits sometimes &quot;tacked on&quot; to the end of a URL when you submit a form on a web page) are perfectly acceptable when using this function too.</Description>
			<Parameter Name="url" Type="String" Optional="false">The web address of the server that you wish to get information from</Parameter>
			<Parameter Name="string" Type="String" Optional="false">The string you wish to send to the specified URL</Parameter>
		</Function>
		<Function Name="http_request" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function, you can create an HTTP header request to define the operating parameters of an HTTP transaction, which can be used for many things like (for example) authentication via HTTP headers if you use RESTful APIs. The function requires the full IP address of the server to request from as well as the type of request to make (as a string, see the note below): &quot;GET&quot;, &quot;HEAD&quot;, &quot;POST&quot;, &quot;PUT&quot;, &quot;DELETE&quot;, &quot;TRACE&quot;, &quot;OPTIONS&quot;, or &quot;CONNECT&quot;. You will also need to supply a DS map of key/value pairs (as strings, where the key is the header field and the value is the required data for the header), and the final argument is an optional data string that you can add to the request, and if it&apos;s not needed then it can be either 0 or an empty string &quot;&quot;. Note that you can also send a buffer (see the section on Buffers for more details), in which case the last argument would be the &quot;handle&quot; of the buffer to send.</Description>
			<Parameter Name="url" Type="String" Optional="false">The web address of the server that you wish to get information from</Parameter>
			<Parameter Name="method" Type="String" Optional="false">The request method (normally &quot;POST&quot; or &quot;GET&quot;, but all methods are supported)</Parameter>
			<Parameter Name="header_map" Type="Id.DsMap" Optional="false">A ds_map with the required header fields</Parameter>
			<Parameter Name="body" Type="Real,String,Id.Buffer" Optional="false">The data to be transmitted following the headers (can be a binary buffer handle)</Parameter>
		</Function>
		<Function Name="http_set_request_crossorigin" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the cross origin type to use when loading images from a file. The function is exclusively for the HTML5 platform and is only useful when loading sprites from a file using the sprite_add() function. Note that when set to &quot;use-credentials&quot; you no longer need to give an absolute path to the sprite being loaded, but instead would give a relative path (as shown in the example below). By default the cross origin type is set to &quot;anonymous&quot;.</Description>
			<Parameter Name="origin_type" Type="String" Optional="false">The cross origin type to use (a string)</Parameter>
		</Function>
		<Function Name="push_cancel_local_notification" Deprecated="true" ReturnType="Real" Pure="false">
			<Description>This function cancels the given push notification. You can get the ID for the notification to cancel using the functions push_get_first_local_notification() and push_get_next_local_notification() and the function will return true on success or false otherwise (for example if the notification does not exist or has already been triggered).</Description>
			<Parameter Name="id" Type="Real" Optional="false">The ID of the notification to cancel.</Parameter>
		</Function>
		<Function Name="push_get_first_local_notification" Deprecated="true" ReturnType="Real" Pure="true">
			<Description>This function will populate a pre-made DS map with a series of key/value pairs for the first local push notification in the queue to be shown. It returns -1 if there are no notifications queued, or a real value otherwise representing the ID for the notification. This ID can then be used to cancel the notification using the function push_cancel_local_notification().</Description>
			<Parameter Name="map" Type="Real" Optional="false">The DS Map ID to use.</Parameter>
		</Function>
		<Function Name="push_get_next_local_notification" Deprecated="true" ReturnType="Real" Pure="true">
			<Description>This function will populate a pre-made DS map with a series of key/value pairs for the next local push notification in the queue to be shown. It returns -1 if there are no further notifications queued, or a real value otherwise representing the ID for the notification. This ID can then be used to cancel the notification using the function push_cancel_local_notification(). You should call the function push_get_first_local_notification() to get the first notification in the queue and then use this function to continue through it.</Description>
			<Parameter Name="map" Type="Real" Optional="false">The DS Map ID to use.</Parameter>
		</Function>
		<Function Name="push_local_notification" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set a local notification to be shown on a given date at a given time. The &quot;fire_time&quot; is the date/time that the notification should be pushed to the user device (you can use the GameMaker Date and Time Functions to get this), and you can give the notification a title and a message text as well as a payload string which will be passed to your game when the users taps the notification.</Description>
			<Parameter Name="fire_time" Type="Real" Optional="false">The date/time to fire the off the notification</Parameter>
			<Parameter Name="title" Type="Any" Optional="false">The notification title (a string)</Parameter>
			<Parameter Name="message" Type="Any" Optional="false">The notification message text (a string)</Parameter>
			<Parameter Name="data" Type="Any" Optional="false">The data package to send to your game (a string)</Parameter>
		</Function>
		<Function Name="buffer_async_group_begin" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function is called when you want to begin the saving out of multiple buffers to multiple files. The &quot;groupname&quot; is a string and will be used as the directory name for where the files will be saved, and should be used as part of the file path when loading the files back into the IDE later (using any of the buffer_load() functions). This function is only for use with the buffer_save_async() function and you must also finish the save definition by calling buffer_async_group_end() function otherwise the files will not be saved out.</Description>
			<Parameter Name="groupname" Type="String" Optional="false">The name of the group (as a string).</Parameter>
		</Function>
		<Function Name="buffer_async_group_end" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>This function finishes the definition of a buffer save group. You must have previously called the function buffer_async_group_begin() to initiate the group, then call the function buffer_save_async() for each file that you wish to save out. Finally you call this function, which will start the saving of the files. The function will return a unique ID value for the save, which can then be used in the Asynchronous Save / Load event to parse the results from the async_load DS map.</Description>
		</Function>
		<Function Name="buffer_async_group_option" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set some platform specific options for the buffer group being saved. The options available are as follows:</Description>
			<Parameter Name="option" Type="String" Optional="false">The option to set.</Parameter>
			<Parameter Name="value" Type="Any" Optional="false">The value to set (can be string or real, depending on the option).</Parameter>
		</Function>
		<Function Name="buffer_base64_decode" Deprecated="false" ReturnType="Id.Buffer" Pure="true">
			<Description>With this function you can decode a base64 encoded string (created using the buffer_base64_encode() function) into a buffer. This function will create the buffer (as a 1 byte aligned &quot;grow&quot; buffer&quot;) and return the unique index for the buffer which should be used in all further function calls.</Description>
			<Parameter Name="string" Type="String" Optional="false">The base64 encoded string to decode</Parameter>
		</Function>
		<Function Name="buffer_base64_decode_ext" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can decode a base64 encoded string (created using the buffer_base64_encode() function) into a buffer. Unlike the function buffer_base64_decode(), this will not create a buffer for you, but rather you should already have created the buffer (see buffer_create()), the id of which you would then use with this function. The &quot;offset&quot; is the position within the buffer to decode the given string (in bytes).</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The index of the buffer to decode the string into.</Parameter>
			<Parameter Name="string" Type="String" Optional="false">The base64 encoded string to decode.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="false">The data offset value.</Parameter>
		</Function>
		<Function Name="buffer_base64_encode" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function will convert the data from the given buffer into a base64 format encoded string. This is a commonly used encoding scheme that is often used for any media that needs to be stored or transferred over the internet as text, and renders the output unreadable to the human eye. To use this you need to specify an already created buffer, the offset value (which is the point within the buffer at which you wish to start encoding) as well as the size, in bytes, of the buffer memory to encode.</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The index of the buffer to use.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="false">The data offset value.</Parameter>
			<Parameter Name="size" Type="Real" Optional="false">The size of the buffer.</Parameter>
		</Function>
		<Function Name="buffer_compress" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can compress part (or all) of a buffer using zlib compression. You supply the ID of the buffer to compress (as returned by buffer_create()), the offset within the buffer to use in bytes, and the size of the buffer data to compress (also in bytes). The function will return a new buffer ID value for the compressed buffer, or a value less than 0 if it has failed for any reason. This function will not alter the original buffer.</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The index of the buffer to compress.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="false">The offset within the buffer to compress (in bytes).</Parameter>
			<Parameter Name="size" Type="Real" Optional="false">The size of the buffer area to compress (in bytes).</Parameter>
		</Function>
		<Function Name="buffer_copy" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to copy a segment (or all) of the data stored in one buffer to another. When using two buffers and copying from one to the other, both buffers must have previously been created using the buffer_create() function (for example), and you can specify a data offset (in bytes) for the start point of the data to be copied from the source buffer relative to the start of the buffer, as well as another data offset to define the position to copy the data to in the destination buffer.</Description>
			<Parameter Name="src_buffer" Type="Id.Buffer" Optional="false">The index of the buffer to copy from.</Parameter>
			<Parameter Name="src_offset" Type="Real" Optional="false">The data offset to start copying from (in bytes).</Parameter>
			<Parameter Name="size" Type="Real" Optional="false">The size of the data to copy (in bytes).</Parameter>
			<Parameter Name="dest_buffer" Type="Id.Buffer" Optional="false">The index of the buffer to copy to.</Parameter>
			<Parameter Name="dest_offset" Type="Real" Optional="false">The offset position to copy the data to (in bytes).</Parameter>
		</Function>
		<Function Name="buffer_copy_from_vertex_buffer" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to copy some (or all) of the vertex data stored in one vertex buffer into a previously created regular buffer. When copying from a vertex buffer into a regular buffer with this function, both buffers must have previously been created (using the vertex_create_buffer() and buffer_create() functions, for example). You can specify the range of vertex data that you wish to copy into the buffer, where the start vertex can be anywhere between 0 and the number of vertices -1, and you can give the number of vertices from that point on to copy. You can use the function vertex_get_number() on the vertex buffer to get the total number of vertices stored. Finally you give the buffer index to copy the vertex data into, as well as a data offset to define the position to copy the vertex data to in the destination buffer.</Description>
			<Parameter Name="vertex_buffer" Type="Id.VertexBuffer" Optional="false">The index of the vertex buffer to copy from.</Parameter>
			<Parameter Name="start_vertex" Type="Real" Optional="false">The starting vertex.</Parameter>
			<Parameter Name="num_vertices" Type="Real" Optional="false">The total number of vertices to use.</Parameter>
			<Parameter Name="dest_buffer" Type="Id.Buffer" Optional="false">The index of the buffer to copy to.</Parameter>
			<Parameter Name="dest_offset" Type="Real" Optional="false">The offset position to copy the data to (in bytes).</Parameter>
		</Function>
		<Function Name="buffer_crc32" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will take input data from a buffer and returns a crc32 checksum hash. You specify the buffer ID of the buffer to use, then an offset value (in bytes) for where to begin, and then a size (again in bytes) for the region to be hashed, and the function will return a 32 bit integer value for that region.</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The index of the buffer to use.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="false">The data offset value.</Parameter>
			<Parameter Name="size" Type="Real" Optional="false">The size of the buffer.</Parameter>
		</Function>
		<Function Name="buffer_create" Deprecated="false" ReturnType="Id.Buffer" Pure="true">
			<Description>You use this function to allocate a portion of memory as a buffer in your game, with the function returning the unique buffer id that should be stored in a variable and used for all further function calls to the buffer. The buffer can then be used to store different types of data (specified when you write to the buffer using the buffer_write() function, with the following constants being used to define the buffer type:</Description>
			<Parameter Name="size" Type="Real" Optional="false">The size (in bytes) of the buffer.</Parameter>
			<Parameter Name="type" Type="Constant.BufferType" Optional="false">The type of buffer to create (see the constants list above).</Parameter>
			<Parameter Name="alignment" Type="Real" Optional="false">The byte alignment for the buffer</Parameter>
		</Function>
		<Function Name="buffer_create_from_vertex_buffer" Deprecated="false" ReturnType="Id.Buffer" Pure="true">
			<Description>You use this function to allocate a portion of memory as a buffer in your game filled with the data from a previously created vertex buffer. The function returns a unique buffer id that should be stored in a variable and used for all further function calls to the buffer. The function takes the id for the vertex buffer to use (as returned by the function vertex_create_buffer(), for example) with the following constants being used to define the buffer type:</Description>
			<Parameter Name="vertex_buffer" Type="Id.VertexBuffer" Optional="false">The vertex buffer index to use.</Parameter>
			<Parameter Name="type" Type="Constant.BufferType" Optional="false">The type of buffer to create (see the constants list above).</Parameter>
			<Parameter Name="alignment" Type="Real" Optional="false">The byte alignment for the buffer</Parameter>
		</Function>
		<Function Name="buffer_create_from_vertex_buffer_ext" Deprecated="false" ReturnType="Id.Buffer" Pure="true">
			<Description>You use this function to allocate a portion of memory as a buffer in your game filled with the data from a previously created vertex buffer. The function returns a unique buffer id that should be stored in a variable and used for all further function calls to the buffer. The function takes the id for the vertex buffer to use (as returned by the function vertex_create_buffer(), for example) with the following constants being used to define the buffer type:</Description>
			<Parameter Name="vertex_buffer" Type="Id.VertexBuffer" Optional="false">The vertex buffer index to use.</Parameter>
			<Parameter Name="type" Type="Constant.BufferType" Optional="false">The type of buffer to create (see the constants list below).</Parameter>
			<Parameter Name="alignment" Type="Real" Optional="false">The byte alignment for the buffer</Parameter>
			<Parameter Name="start_vertex" Type="Real" Optional="false">The starting vertex.</Parameter>
			<Parameter Name="num_vertices" Type="Real" Optional="false">The total number of vertices to copy.</Parameter>
		</Function>
		<Function Name="buffer_decompress" Deprecated="false" ReturnType="Id.Buffer" Pure="false">
			<Description>With this function you can decompress a previously compressed buffer using zlib compression. You supply the buffer ID to decompress, and the function will return a new buffer ID that contains the uncompressed data. If the decompression has failed (for example, you are supplying a buffer that hasn&apos;t been compressed) then the function will instead return a value less than 0.</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The index of the buffer to decompress.</Parameter>
		</Function>
		<Function Name="buffer_delete" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can delete a buffer previously have created using the function buffer_create() from memory, releasing the resources used to create it and removing any data that it may currently contain.</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The index of the buffer to delete.</Parameter>
		</Function>
		<Function Name="buffer_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function can be used to check a variable to see if it holds a valid buffer ID value or not. If it does the function will return true otherwise it will return false.</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The index of the buffer to check.</Parameter>
		</Function>
		<Function Name="buffer_fill" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to fill a previously created buffer with a given data type and value. The data you fill the buffer with must be in agreement with the &quot;type&quot; argument of this function, meaning that you can&apos;t try to fill with a string and use the unsigned 16bit integer type, for example. The type constants are the same as those used by the buffer_read() and buffer_write() functions. The &quot;size&quot; is the size of the buffer (in bytes) that you wish to fill, while the offset is the offset value (also in bytes) from the start of the buffer to start the fill from.</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The index of the buffer to fill.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="false">The data offset value (in bytes).</Parameter>
			<Parameter Name="type" Type="Constant.BufferDataType" Optional="false">The type of data that is to be written to the buffer (see the list of constants here).</Parameter>
			<Parameter Name="value" Type="Any" Optional="false">The data to write.</Parameter>
			<Parameter Name="size" Type="Any" Optional="false">The size of the buffer (in bytes) that you wish to fill.</Parameter>
		</Function>
		<Function Name="buffer_get_address" Deprecated="false" ReturnType="Pointer" Pure="true">
			<Description>With this function you can get the a pointer to the raw, aligned buffer address. This is primarily for use with extensions as you can pass this value through to them, allowing them to access the buffer data. Note that there are a few things you cannot do with the buffer when accessing from an extension:</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The index of the buffer to use.</Parameter>
		</Function>
		<Function Name="buffer_get_alignment" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the a byte alignment for the given buffer ID.</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The index of the buffer to check.</Parameter>
		</Function>
		<Function Name="buffer_get_size" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the size of the given buffer in bytes.</Description>
			<Parameter Name="index" Type="Id.Buffer" Optional="false">The index of the buffer to get the size of.</Parameter>
		</Function>
		<Function Name="buffer_get_surface" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can write information from a surface to a given buffer. The buffer must have been created previously and should be a 1-byte aligned buffer large enough to store data for the surface you are going to write (if unsure, use a grow buffer or see the example at the bottom of this page).</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The index of the buffer to use.</Parameter>
			<Parameter Name="surface" Type="Id.Surface" Optional="false">The index of the surface to use.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="false">The data offset value (in bytes).</Parameter>
		</Function>
		<Function Name="buffer_get_type" Deprecated="false" ReturnType="Constant.BufferType" Pure="true">
			<Description>With this function you retrieve the type of buffer that is being referenced by a buffer ID value. The return value will be one of the following constants:</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The index of the buffer to check.</Parameter>
		</Function>
		<Function Name="buffer_load" Deprecated="false" ReturnType="Id.Buffer" Pure="false">
			<Description>This function is used to load a buffer that was previously saved using the buffer_save() functions, as well as any Included Files or files loaded externally. It will return a new buffer&apos;s ID which is created by the function as a &quot;grow&quot; buffer (see here) with a byte alignment of 1. This ID should be stored in a variable and used in all further function calls to this buffer. If the load fails for whatever reason, the function will return -1 and a message will be shown in the compiler output window saying that the load has failed.</Description>
			<Parameter Name="filename" Type="String" Optional="false">The name of the file to load from.</Parameter>
		</Function>
		<Function Name="buffer_load_async" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can load a file that you have created previously using the buffer_save() function (or any of the other functions for saving buffers) into a buffer. The &quot;offset&quot; defines the start position within the buffer for loading (in bytes), and the &quot;size&quot; is the size of the buffer area to be loaded from that offset onwards (also in bytes). You can supply a value of -1 for the size argument and the entire buffer will be loaded. Note that the function will load from a &quot;default&quot; folder, which does not need to be included as part of the file path you provide. This folder will be created if it doesn&apos;t exist or when you save a file using buffer_save_async().</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The index of the buffer to load.</Parameter>
			<Parameter Name="filename" Type="String" Optional="false">The name of the file to load.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="false">The offset within the buffer to load to (in bytes).</Parameter>
			<Parameter Name="size" Type="Real" Optional="false">The size of the buffer area to load (in bytes).</Parameter>
		</Function>
		<Function Name="buffer_load_ext" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will load the buffer data that was previously saved using the buffer_save() functions into an already created buffer. You give the id of the previously created buffer to load into, then the saved buffer file to load, and finally the offset from the start of the buffer (in bytes) that you wish to load the data to.</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The index of the buffer to load into.</Parameter>
			<Parameter Name="filename" Type="String" Optional="false">The name of the file to load from.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="false">The offset within the buffer to load to (in bytes).</Parameter>
		</Function>
		<Function Name="buffer_load_partial" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>This function will load some of the buffer data that was previously saved using the buffer_save() functions into an already created buffer. You give the id of the previously created buffer to load into, then the saved buffer file to load, and then the offset from the start of the buffer (in bytes) that you wish to load the data from. The following arguments are for setting the length of the buffer data (in bytes) from the initial offset point that you wish to load and the offset point to load the data to in the buffer (again, in bytes).</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The index of the buffer to load.</Parameter>
			<Parameter Name="filename" Type="String" Optional="false">The name of the file to load.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="false">The offset within the buffer to load to (in bytes).</Parameter>
			<Parameter Name="src_len" Type="Real" Optional="false">The length of the part of the buffer to load (in bytes).</Parameter>
			<Parameter Name="dest_offset" Type="Real" Optional="false">The offset where to start putting the partial data in the new buffer (in bytes).</Parameter>
		</Function>
		<Function Name="buffer_md5" Deprecated="false" ReturnType="String" Pure="true">
			<Description>In cryptography, MD5 (Message-Digest algorithm 5) is a widely used cryptographic hashing function with a 128-bit hash value and has been employed in a wide variety of security applications. It is also commonly used to check the integrity of data. This function will take the input data from a given buffer (or part of the buffer) and return the 32-character hexadecimal MD5 hash that is unique to that data. In this way you can generate a secure key which can be stored and used to check the integrity of the information being sent to (or received from) an external server (for example). When applying this to buffers using this function you must specify the buffer id of the buffer to use, then an offset value (in bytes) for where to begin, and then a size (again in bytes) for the region to be hashed.</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The index of the buffer to use.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="false">The data offset value.</Parameter>
			<Parameter Name="size" Type="Real" Optional="false">The size of the buffer.</Parameter>
		</Function>
		<Function Name="buffer_peek" Deprecated="false" ReturnType="ArgumentIdentity" Pure="true">
			<Description>With the buffer_read() function, you can read data from the given buffer at the current &quot;seek&quot; position, with each piece of data being read advancing this position by the bytes being read or written. However, it may be necessary for you to read a given piece of data without wanting to change the current seek position, and that&apos;s when you would use this function. You simply supply the function with a buffer id, and then an offset position (from the buffer start) within that buffer to read from, as well as the data type that you are wanting to read.</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The index of the buffer to use.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="false">The offset position (in bytes) within the buffer to read the given data from.</Parameter>
			<Parameter Name="type" Type="Constant.BufferDataType" Optional="false">The type of data that is to be read from the buffer (see the list of constants here).</Parameter>
		</Function>
		<Function Name="buffer_poke" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With the buffer_write() function, you can write data to the given buffer at the current &quot;seek&quot; position, with each piece of data advancing this position by the bytes being written or read. However, it may be necessary for you to change a given piece of data without wanting to change the current seek position, and that&apos;s when you would use this function. You simply supply the function with a buffer index, and then the offset position from the buffer start (in bytes) within that buffer to write to, as well as the data type and the value to be written.</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The index of the buffer to use.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="false">The offset position (in bytes) within the buffer to write the given data to.</Parameter>
			<Parameter Name="type" Type="Constant.BufferDataType" Optional="false">The type of data that is to be written to the buffer (see the list of constants here).</Parameter>
			<Parameter Name="value" Type="Any" Optional="false">The data to add to the buffer, in accordance with the type specified.</Parameter>
		</Function>
		<Function Name="buffer_read" Deprecated="false" ReturnType="ArgumentIdentity" Pure="false">
			<Description>This function can be used to read data from a previously created buffer. The return value will depend on the type of data that you are reading, which in itself is defined by the following constants:</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The index of the buffer to read from.</Parameter>
			<Parameter Name="type" Type="Constant.BufferDataType" Optional="false">The type of data that is to be read from the buffer (see the list of constants above).</Parameter>
		</Function>
		<Function Name="buffer_resize" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can resize a given buffer to be the size (in bytes) that you specify.</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The index of the buffer to change the size of.</Parameter>
			<Parameter Name="newsize" Type="Real" Optional="false">The new size of the buffer (in bytes).</Parameter>
		</Function>
		<Function Name="buffer_save" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can save the contents of a buffer to a file, ready to be read back into memory using the buffer_load() function.</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The index of the buffer to save.</Parameter>
			<Parameter Name="filename" Type="String" Optional="false">The name of the file to save as.</Parameter>
		</Function>
		<Function Name="buffer_save_async" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can save part of the contents of a buffer to a file, ready to be read back into memory using the buffer_load() function (or any of the other functions for loading buffers). The &quot;offset&quot; defines the start position within the buffer for saving (in bytes), and the &quot;size&quot; is the size of the buffer area to be saved from that offset onwards (also in bytes). This function works asynchronously, and so the game will continue running while being saved, and all files saved using this function will be placed in a &quot;default&quot; folder. This folder does not need to be included in the filename as it is added automatically by GameMaker. For example the filename path &quot;Data\Player_Save.sav&quot; would actually be saved to &quot;default\Data\Player_Save.sav&quot;. However, if you then load the file using the function buffer_load_async(), you do not need to supply the &quot;default&quot; part of the path either (but any other file function will require it, except on consoles Xbox One, PS4 and Nintendo Switch).</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The index of the buffer to save.</Parameter>
			<Parameter Name="filename" Type="String" Optional="false">The name of the file to save as.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="false">The offset within the buffer to save from (in bytes).</Parameter>
			<Parameter Name="size" Type="Real" Optional="false">The size of the buffer area to save (in bytes).</Parameter>
		</Function>
		<Function Name="buffer_save_ext" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can save part of the contents of a buffer to a file, ready to be read back into memory using the buffer_load() function. The &quot;offset&quot; defines the start position within the buffer for saving (in bytes), and the &quot;size&quot; is the size of the buffer area to be saved from that offset onwards (also in bytes).</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The index of the buffer to save.</Parameter>
			<Parameter Name="filename" Type="String" Optional="false">The name of the file to save as.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="false">The offset within the buffer to save from (in bytes).</Parameter>
			<Parameter Name="size" Type="Real" Optional="false">The size of the buffer area to save (in bytes).</Parameter>
		</Function>
		<Function Name="buffer_seek" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to move through a buffer, finding the start, the end, or a position relative to that which was last used when reading or writing data. The &quot;offset&quot; value is the offset (in bytes) to add to the given seek position, for example, if the base is relative and the offset is 4, then the buffer position will move along 4 bytes from its current position. Please note the following:</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The index of the buffer to use.</Parameter>
			<Parameter Name="base" Type="Constant.SeekOffset" Optional="false">The base position to seek.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="false">The data offset value.</Parameter>
		</Function>
		<Function Name="buffer_set_surface" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can write information from a buffer to a given surface. Both the buffer being read from and the surface being written to must have been created previously, and you can provide an offset into the buffer to start reading from. Note that reading will always start at the beginning of the buffer plus the offset value and not at the current seek position plus the offset value.</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The index of the buffer to use.</Parameter>
			<Parameter Name="surface" Type="Id.Surface" Optional="false">The index of the surface to use.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="false">The data offset value.</Parameter>
		</Function>
		<Function Name="buffer_set_used_size" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function is primarily for use within extensions, and allows you to set the &quot;used&quot; size of the given buffer, which is the number of bytes that have been written to it.</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The index of the buffer to use.</Parameter>
			<Parameter Name="size" Type="Real" Optional="false">The number of bytes to set as the &quot;used&quot; size.</Parameter>
		</Function>
		<Function Name="buffer_sha1" Deprecated="false" ReturnType="String" Pure="true">
			<Description>In cryptography, SHA-1 is a cryptographic hashing function designed by the United States National Security Agency and is employed in several widely used applications and protocols like the popular Git where it is used to check for file changes. This function will take input data from a buffer and returns a 160 bit message digest in ASCII format. In this way you can generate a secure key which can be stored and used to check the integrity of the information being sent to (or received from) an external server (for example). When applying this to buffers using this function you must specify the buffer id of the buffer to use, then an offset value (in bytes) for where to begin, and then a size (again in bytes) for the region to be hashed.</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The index of the buffer to use.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="false">The data offset value.</Parameter>
			<Parameter Name="size" Type="Real" Optional="false">The size of the buffer.</Parameter>
		</Function>
		<Function Name="buffer_sizeof" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the size (in bytes) of any of the given data constants (listed here).</Description>
			<Parameter Name="type" Type="Constant.BufferDataType" Optional="false">The type of data that is to be checked (see the list of constants here).</Parameter>
		</Function>
		<Function Name="buffer_tell" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>When you read or write data to a buffer using the buffer_read() or buffer_write() the current &quot;seek&quot; position is advanced by the bytes written or read, and with this function you can get the current &quot;seek&quot; position for use in other buffer functions. For example, if your buffer alignment is set to 4 bytes and you write a single piece of data which is 1 byte in size then do a buffer_tell(), you&apos;ll get an return value of 1. However, if you write another piece of data, also 1 byte in size, then do a buffer_tell(), you&apos;ll get a return value of 5 as the alignment has &quot;padded&quot; the data to that position.</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The index of the buffer to use.</Parameter>
		</Function>
		<Function Name="buffer_write" Deprecated="false" ReturnType="Any" Pure="false">
			<Description>This function can be used to write data to a previously created buffer. The data you write must be in agreement with the &quot;type&quot; argument of this function, meaning that you can&apos;t try to write a string as an unsigned 16bit integer, for example. The following constants can be used to define the data type:</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The index of the buffer to write to.</Parameter>
			<Parameter Name="type" Type="Constant.BufferDataType" Optional="false">The type of data that is to be written to the buffer (see the list of constants above).</Parameter>
			<Parameter Name="value" Type="Any" Optional="false">The data to write.</Parameter>
		</Function>
		<Function Name="display_get_dpi_x" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Dots per inch (DPI) is a measure of spatial printing or video dot density, in particular the number of individual dots that can be placed in a line within the span of 1 inch (2.54 cm). When working on mobile devices (in particular Android devices) this is an important factor to take into consideration as what may be appropriate for one display resolution, may not be appropriate for another. For example, you may have two displays with the same resolution of 400 x 800, but display 1 has a dpi of 60 and display 2 has a dpi of 30. In this case, any text or image displayed on display 2 will appear much larger, even though the actual resolution is the same.</Description>
		</Function>
		<Function Name="display_get_dpi_y" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Dots per inch (DPI) is a measure of spatial printing or video dot density, in particular the number of individual dots that can be placed in a line within the span of 1 inch (2.54 cm). When working on mobile devices (in particular Android devices) this is an important factor to take into consideration as what may be appropriate for one display resolution, may not be appropriate for another. For example, you may have two displays with the same resolution of 400 x 800, but display 1 has a dpi of 60 and display 2 has a dpi of 30. In this case, any text or image displayed on display 2 will appear much larger, even though the actual resolution is the same.</Description>
		</Function>
		<Function Name="display_get_gui_width" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the height (in pixels) of the GUI as used in the Draw GUI Event.</Description>
		</Function>
		<Function Name="display_get_height" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the height of the display (in pixels). Note that on the HTML5 target, this value is the height of the browser window, rather than the physical display size.</Description>
		</Function>
		<Function Name="display_get_orientation" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return one of two constants GameMaker has to tell you whether the device running the game is being held in landscape or portrait mode (see the table below). Note that this function may not correctly detect the orientation of the device when used in the HTML5 target module. However this is easily mimicked by the use of the following script:</Description>
		</Function>
		<Function Name="display_get_sleep_margin" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to get the current sleep margin value used for the render timing of your game, and will return a millisecond value. For more information on display timing, please see display_set_timing_method().</Description>
		</Function>
		<Function Name="display_get_timing_method" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to retrieve the timing method to be used for rendering your game. The method can be one of the constants listed below.</Description>
		</Function>
		<Function Name="display_get_width" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the width of the display (in pixels). Note that on the HTML5 target, this value is the width of the browser window, rather than the physical display size.</Description>
		</Function>
		<Function Name="display_mouse_get_x" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the mouse x position within the screen. It should be noted that this function only works properly when used on the Windows target. It can be used for HTML5 too, but will only return a value relative to the 0,0 of the canvas itself, and will not return any value while the mouse is outside of the canvas. For other devices it will return 0, and you should use the device_mouse_raw_x()and device_mouse_raw_y() functions instead.</Description>
		</Function>
		<Function Name="display_mouse_get_y" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the mouse y position within the screen. It should be noted that this function only works properly when used on the Windows target. It can be used for HTML5 too, but will only return a value relative to the 0,0 of the canvas itself, and will not return any value while the mouse is outside of the canvas. For other devices it will return 0, and you should use the device_mouse_raw_x() and device_mouse_raw_y() functions instead.</Description>
		</Function>
		<Function Name="display_mouse_set" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can change or set the position of the mouse within the game display which can be useful for FPS games, for example. The function will only work while the game is in focus and using ALT + Tab will unlock the mouse.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate in the display.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate in the display.</Parameter>
		</Function>
		<Function Name="display_reset" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>This function Resets the display settings to the ones that were set when the game was started, but also allows you to change the current level of full screen anti-aliasing being used and whether to use vertical synchronisation. The available anti-aliasing levels are 0,2,4 and 8, with the default startup value being set to 0, and the default v-sync setting is false (off). Switching v-sync on may give a smoother gaming experience but it will also need more processing power and so its impact must be considered careful before use, and the same goes for the anti-aliasing where the higher the number the more processing that is required.</Description>
			<Parameter Name="aa" Type="Real" Optional="false">The level of anti-aliasing filtering (0, 2, 4 or 8).</Parameter>
			<Parameter Name="vsync" Type="Bool" Optional="false">Toggle vertical synchronisation to on (true) or off (false).</Parameter>
		</Function>
		<Function Name="display_set_gui_size" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will only affect things drawn in the Draw GUI Event and can be used to set a specific width and height for all GUI components in that event, and no matter what size of display or window is used to display the GUI, it will be scaled to fit correctly. Where the GUI is positioned (ie: the (0,0) position) will depend on whether you have used the function display_set_gui_maximise() or not. If you do not use this function (the default setting) then the GUI layer will be positioned with its (0,0) point at the same position as that for the application surface (the area where your game is being drawn) and the width and height will be stretched to fit the this surface, such that setting a GUI width of 256px with this function when the application surface is 512px would stretch those 256 pixels to fit, effectively making the pixels twice as large. This is ideal for those games that have aspect ratio correction set in the global Game Settings.</Description>
			<Parameter Name="width" Type="Real" Optional="false">The width of the GUI</Parameter>
			<Parameter Name="height" Type="Real" Optional="false">The height of the GUI</Parameter>
		</Function>
		<Function Name="display_set_sleep_margin" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set the sleep margin value used for the render timing of your game, and requires a millisecond value. The default values are as follows:</Description>
			<Parameter Name="milliseconds" Type="Real" Optional="false">The number of milliseconds for the sleep margin</Parameter>
		</Function>
		<Function Name="display_set_timing_method" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function can be used to set the timing method to be used for rendering your game. The method can be one of the following constants:</Description>
			<Parameter Name="method" Type="String" Optional="false">The timing method to use (see the list of constants, above)</Parameter>
		</Function>
		<Function Name="display_set_ui_visibility" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to show or hide the system UI on Android only. The function requires you to supply one or more system flags as an integer value. When using more than a single flag, these need to be merged using the bitwise &quot;or&quot;, as shown in the example below. You can find a list of Android system flags here.</Description>
			<Parameter Name="flags" Type="Real" Optional="false">The Android SYSTEM flags to use (as an integer value).</Parameter>
		</Function>
		<Function Name="gif_add_surface" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can save a frame to a GIF file from a surface. You supply the GIF file ID (as returned by the function gif_open()) and a surface ID (as returned by the function surface_create()), as well as a delay time between frames. The delay time is calculated in 1/100ths of a second, but note that once the GIF has been created, if you use it for promotional purposes for example, different browsers may interpret the frame delay slightly differently - see here for more details. You may (optionally) supply X and Y offset values for the surface being used to add to the GIF, in which case the part drawn to the GIF will begin from the offset and not the default (0,0) position, permitting you to select only a section of the surface to add. You can also supply a quantization value, which is an integer between 0 and 3, where 0 is full quantization and 3 is zero quantization (lower values will have a subsequent degradation in quality, but create a smaller GIF). Note that there isn&apos;t much difference between the default quality of 2, and the highest of 3, and using 3 will significantly slow down the creation of the GIF so care should be taken when using the maximum value.</Description>
			<Parameter Name="gif_index" Type="Id.Gif" Optional="false">The ID of gif to add the surface data to</Parameter>
			<Parameter Name="surface" Type="Id.Surface" Optional="false">The ID of the surface to use as the added frame</Parameter>
			<Parameter Name="delay_time" Type="Real" Optional="false">The delay time for the frame (in 100ths of a second)</Parameter>
			<Parameter Name="xoffset" Type="Real" Optional="true">[Optional] The offset along the X axis of the surface to add from</Parameter>
			<Parameter Name="yoffset" Type="Real" Optional="true">[Optional] The offset along the Y axis of the surface to add from</Parameter>
			<Parameter Name="quantization" Type="Real" Optional="true">[Optional] The quantization amount from 0 to 3 (0 lowest quality, 3 highest quality, default is 2)</Parameter>
		</Function>
		<Function Name="gif_open" Deprecated="false" ReturnType="Id.Gif" Pure="true">
			<Description>With this function you can create an empty GIF format image, ready to have data added to it. When you call the function, you need to specify the width and height of the GIF (in pixels, and there is no upper limit on size except for available memory), and the function will return the unique ID value used to identify the gift in subsequent functions, or it will return -1 if the gif could not be initialized (for example, if the width/height are too big for the memory available). You may also specify an optional argument to set the &quot;clear colour&quot; for the GIF. This is an RGB value (no alpha component), and will clear the gif to this colour before anything is added to it. If you do not supply a clear colour argument, the default colour of black will be used.</Description>
			<Parameter Name="width" Type="Real" Optional="false">The width of the gif to create</Parameter>
			<Parameter Name="height" Type="Real" Optional="false">The height of the gif to create</Parameter>
			<Parameter Name="clear_colour" Type="Constant.Color" Optional="true">[Optional] The colour (RGB) to clear the gif to</Parameter>
		</Function>
		<Function Name="gif_save" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can save out a GIF animation. You supply the GIF index (as returned by the function gif_open()) as well as a filename to save it with. Note that GameMaker does not automatically append the .gif file extension, so you should include this as part of the filename string if you wish the saved file to be identified as a GIF. The created GIF will be palletized using the Universal 884 Palette (see here for more information).</Description>
			<Parameter Name="gif_index" Type="Id.Gif" Optional="false">The ID of gif to save</Parameter>
			<Parameter Name="fname" Type="String" Optional="false">The filename to use for the gif</Parameter>
		</Function>
		<Function Name="gif_save_buffer" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can save out a GIF animation. You supply the GIF index (as returned by the function gif_open()) and the function will return a 1 byte-aligned grow buffer with the GIF data. Note that the final GIF data will have been palletized using the Universal 884 Palette (see here for more information).</Description>
			<Parameter Name="gif_index" Type="Id.Gif" Optional="false">The ID of gif to save</Parameter>
		</Function>
		<Function Name="screen_save" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can save a screenshot of the game as it currently appears in the game window. The file will be saved to the working directory of the game, which in windows is located at &lt;drive&gt;:/Users/YOURUSERNAME/AppData/Local/[Game Name]/ and on Mac it would be ~/Library/Application Support/[Game Name]/. The image captured will be the final render of the application surface of the game, or (if the app surface has been disabled) it will be an image of the whole display or window. It is important to note that the function is designed to be called in the Draw GUI End Event, which should give consistent results across all platforms. Using it in any other event may not work as expected, and may give different results across different targets and even devices. Should you need more control over what is being saved, you should use the function screen_save_part().</Description>
			<Parameter Name="fname" Type="String" Optional="false">The filename for the screenshot to save</Parameter>
		</Function>
		<Function Name="screen_save_part" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can save a screenshot of a part of the game as it currently appears in the game display. The selection coordinates are based on the absolute size of the display (or window if not fullscreen), so (0,0) is always the top left hand corner of the screen (or window). Below is an image that shows how this function works:</Description>
			<Parameter Name="fname" Type="String" Optional="false">The filename for the screenshot to save</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of the top left corner of the area of the screen to capture</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of the top left corner of the area of the screen to capture</Parameter>
			<Parameter Name="w" Type="Real" Optional="false">The width of the area of the screen to capture</Parameter>
			<Parameter Name="h" Type="Real" Optional="false">The height of the area of the screen to capture</Parameter>
		</Function>
		<Function Name="camera_apply" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will apply the given camera settings to the current camera view being rendered immediately. While you can set any view camera using the specific camera_set_* functions, the new settings will not be used for rendering until the next game frame, but with this function you can make those changes immediately. If you are using multiple views then the function should be used in the Draw Event and you can use the variable view_current to selectively apply the given camera only to the camera view currently being rendered. Note that this does NOT change the camera ID value, only the settings for that camera, and that if you use this function on the default camera (ie: the internal camera GameMaker uses when no view cameras are active) the changes will be overwritten the very next game frame by the internal settings for drawing the room.</Description>
			<Parameter Name="camera_id" Type="Id.Camera" Optional="false">The unique camera ID value returned when you created the camera.</Parameter>
		</Function>
		<Function Name="camera_copy_transforms" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will copy the transforms from one camera to another.</Description>
			<Parameter Name="dest_camera_id" Type="Id.Camera" Optional="false">The unique camera ID value for the camera the values will be copied to.</Parameter>
			<Parameter Name="src_camera_id" Type="Id.Camera" Optional="false">The unique camera ID value for the camera the values will be copied from.</Parameter>
		</Function>
		<Function Name="camera_create" Deprecated="false" ReturnType="Id.Camera" Pure="true">
			<Description>This function will create an &quot;empty&quot; camera, ie: a camera with no view or projection settings defined. Once you have created the camera you can then use the different matrix functions to set the view and projection matrices. You can also use this function to create the camera and then use the different camera_set_* functions to set up the view, however note that you must provide at least a position and view size, otherwise the resulting camera will not be valid and give odd results if applied to a view port (if you do not set the object following, borders or move speed these will be set to the default values for a view camera in the Room Editor).</Description>
		</Function>
		<Function Name="camera_create_view" Deprecated="false" ReturnType="Id.Camera" Pure="true">
			<Description>This function will create a new camera and then set its view into the room, before return the unique ID value to identify the camera in future function calls. The camera will be created using the values that you set in this function for position, size and other details which correlate to the values you set in the Room Editor (see here). Note that this function can take a variable number of arguments with only the x/y position and width/height arguments being obligatory. Any arguments not supplied will use their default arguments.</Description>
			<Parameter Name="room_x" Type="Real" Optional="false">The x position (within the room) of the left side of the area the camera view captures.</Parameter>
			<Parameter Name="room_y" Type="Real" Optional="false">The y position (within the room) of the top of the area the camera view captures.</Parameter>
			<Parameter Name="width" Type="Real" Optional="false">The width of the area the view captures.</Parameter>
			<Parameter Name="height" Type="Real" Optional="false">The height of the area the view captures.</Parameter>
			<Parameter Name="angle" Type="Real" Optional="true">The angle to set the for the camera view(from 0° - 360°, default is 0).</Parameter>
			<Parameter Name="object" Type="Id.Instance,Asset.GMObject" Optional="true">The object ID (or instance ID) for the camera view to follow (default is -1, no object).</Parameter>
			<Parameter Name="x_speed" Type="Real" Optional="true">The maximum horizontal speed the view can move at (set to -1 for &quot;instant&quot; following, default is -1).</Parameter>
			<Parameter Name="y_speed" Type="Real" Optional="true">The maximum vertical speed the view can move at (set to -1 for &quot;instant&quot; following, default is -1).</Parameter>
			<Parameter Name="x_border" Type="Real" Optional="true">The minimum horizontal space between the edge of the view area and the instance it is set to follow (before the view begins moving and if it is set to follow an instance, default is 0).</Parameter>
			<Parameter Name="y_border" Type="Real" Optional="true">The minimum vertical space between the edge of the view area and the instance it is set to follow (before the view begins moving and if it is set to follow an instance, default is 0).</Parameter>
		</Function>
		<Function Name="camera_destroy" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can destroy any camera. When calling the function you supply the unique camera ID value, which you get from the camera_create_* functions or from the view_camera array if using the Room Editor to set up the view port and view. You should never destroy a camera that is currently assigned to a visible view, unless you are assigning a new camera to that view in the same step, and you should always destroy any cameras that you have created through code when no longer required by your game to prevent memory leaks, and you can also destroy the default cameras if you have any assigned in the Room Editor, but you should assign a new camera to the view port (or disable it) otherwise you will get odd results.</Description>
			<Parameter Name="camera_id" Type="Id.Camera" Optional="false">The unique camera ID value returned when you created the camera.</Parameter>
		</Function>
		<Function Name="camera_get_active" Deprecated="false" ReturnType="Id.Camera" Pure="true">
			<Description>This function can be used to retrieve the unique camera ID value of the currently active camera.</Description>
		</Function>
		<Function Name="camera_get_begin_script" Deprecated="false" ReturnType="Function" Pure="true">
			<Description>This function can be used to retrieve the ID of the script function assigned as the begin script for the given camera. If no script function is assigned then the function will return -1.</Description>
			<Parameter Name="camera_id" Type="Id.Camera" Optional="false">The unique camera ID value returned when you created the camera</Parameter>
		</Function>
		<Function Name="camera_get_default" Deprecated="false" ReturnType="Id.Camera" Pure="true">
			<Description>This function can be used to retrieve the unique camera ID value of the default camera (the camera that GameMaker uses when no camera views or ports are active in a game room).</Description>
		</Function>
		<Function Name="camera_get_end_script" Deprecated="false" ReturnType="Function" Pure="true">
			<Description>This function can be used to retrieve the ID of the script function assigned as the end function for the given camera. If no script function is assigned then the function will return -1.</Description>
			<Parameter Name="camera_id" Type="Id.Camera" Optional="false">The unique camera ID value returned when you created the camera</Parameter>
		</Function>
		<Function Name="camera_get_proj_mat" Deprecated="false" ReturnType="Array[Real]" Pure="true">
			<Description>This function can be used to retrieve the projection matrix. The function returns the matrix ID value which can then be used in other matrix functions or to set the projection matrix of another camera (using camera_set_proj_mat()).</Description>
			<Parameter Name="camera_id" Type="Id.Camera" Optional="false">The unique camera ID value returned when you created the camera</Parameter>
		</Function>
		<Function Name="camera_get_update_script" Deprecated="false" ReturnType="Function" Pure="true">
			<Description>This function can be used to retrieve the ID of the script function assigned as the update script for the given camera. If no script is assigned then the function will return -1.</Description>
			<Parameter Name="camera_id" Type="Id.Camera" Optional="false">The unique camera ID value returned when you created the camera</Parameter>
		</Function>
		<Function Name="camera_get_view_angle" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to retrieve the angle of the given camera. The return value will be between 0 and 360. Note that this function is only valid for cameras created using camera_create_view() or for those added in the room editor.</Description>
			<Parameter Name="camera_id" Type="Id.Camera" Optional="false">The unique camera ID value returned when you created the camera</Parameter>
		</Function>
		<Function Name="camera_get_view_border_x" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to retrieve the border value for object/instance following of the given camera along the x axis (horizontal border). The return value will be in pixels.</Description>
			<Parameter Name="camera_id" Type="Id.Camera" Optional="false">The unique camera ID value returned when you created the camera</Parameter>
		</Function>
		<Function Name="camera_get_view_border_y" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to retrieve the border value for object/instance following of the given camera along the y axis (vertical border). The return value will be in pixels.</Description>
			<Parameter Name="camera_id" Type="Id.Camera" Optional="false">The unique camera ID value returned when you created the camera</Parameter>
		</Function>
		<Function Name="camera_get_view_height" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to retrieve the height (in pixels) of the given camera. Note that this function is only valid for cameras created using camera_create_view() or for those added in the room editor.</Description>
			<Parameter Name="camera_id" Type="Id.Camera" Optional="false">The unique camera ID value returned when you created the camera</Parameter>
		</Function>
		<Function Name="camera_get_view_mat" Deprecated="false" ReturnType="Array[Real]" Pure="true">
			<Description>This function can be used to retrieve the view matrix. The function returns the matrix ID value which can then be used in other matrix functions or to set the view matrix of another camera (using camera_set_view_mat()). Note that this function is generally for use with cameras created using camera_create(), but it can also be used on those created in the room editor (or with camera_create_view()) - in which case the returned matrix will only be valid after the given camera is used in a view port for the first time.</Description>
			<Parameter Name="camera_id" Type="Id.Camera" Optional="false">The unique camera ID value returned when you created the camera</Parameter>
		</Function>
		<Function Name="camera_get_view_speed_x" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to retrieve the movement speed of the given camera along the x axis (horizontal movement). The return value will be in pixels per game frame.</Description>
			<Parameter Name="camera_id" Type="Id.Camera" Optional="false">The unique camera ID value returned when you created the camera</Parameter>
		</Function>
		<Function Name="camera_get_view_speed_y" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to retrieve the movement speed of the given camera along the y axis (vertical movement). The return value will be in pixels per game frame.</Description>
			<Parameter Name="camera_id" Type="Id.Camera" Optional="false">The unique camera ID value returned when you created the camera</Parameter>
		</Function>
		<Function Name="camera_get_view_target" Deprecated="false" ReturnType="Id.Instance" Pure="true">
			<Description>This function can be used to retrieve the follow target of the given camera. The return value can be an object index, an instance ID or -1 if no follow target has been set.</Description>
			<Parameter Name="camera_id" Type="Id.Camera" Optional="false">The unique camera ID value returned when you created the camera</Parameter>
		</Function>
		<Function Name="camera_get_view_width" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to retrieve the width (in pixels) of the given camera. Note that this function is only valid for cameras created using camera_create_view() or for those added in the room editor.</Description>
			<Parameter Name="camera_id" Type="Id.Camera" Optional="false">The unique camera ID value returned when you created the camera</Parameter>
		</Function>
		<Function Name="camera_get_view_x" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to retrieve the x position of the view for a given camera. Note that this function is only valid for cameras created using camera_create_view() or for those added in the room editor.</Description>
			<Parameter Name="camera_id" Type="Id.Camera" Optional="false">The unique camera ID value returned when you created the camera</Parameter>
		</Function>
		<Function Name="camera_get_view_y" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to retrieve the y position of the view for a given camera. Note that this function is only valid for cameras created using camera_create_view() or for those added in the room editor.</Description>
			<Parameter Name="camera_id" Type="Id.Camera" Optional="false">The unique camera ID value returned when you created the camera</Parameter>
		</Function>
		<Function Name="camera_set_begin_script" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set a script function that will be called at the beginning of every game frame that the camera is assigned to a visible and active view port. You give the unique camera ID value (as returned by the different camera_create() functions) and the ID of the function to be called. The order in which scripts attached to cameras and the actual rendering of the camera view is as follows:</Description>
			<Parameter Name="camera_id" Type="Id.Camera" Optional="false">The unique camera ID value returned when you created the camera.</Parameter>
			<Parameter Name="script" Type="Function,Real" Optional="false">The script function to run each game frame</Parameter>
		</Function>
		<Function Name="camera_set_default" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set the default camera to use a custom camera that you have previously created using one of the camera_create() functions. When you create a room with no active view ports or view cameras, GameMaker still uses a camera to show the action in the game. This camera is called the default camera and can be set and manipulated (and even destroyed) just like any other camera.</Description>
			<Parameter Name="camera_id" Type="Id.Camera" Optional="false">The unique camera ID value returned when you created the camera</Parameter>
		</Function>
		<Function Name="camera_set_end_script" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set a script function that will be called at the end of every game frame that the camera is assigned to a visible and active view port, after everything for that view camera has been rendered. You give the unique camera ID value (as returned by the different camera_create() functions) and the ID of the function to be called. The order in which functions attached to cameras and the actual rendering of the camera view is as follows:</Description>
			<Parameter Name="camera_id" Type="Id.Camera" Optional="false">The unique camera ID value returned when you created the camera.</Parameter>
			<Parameter Name="script" Type="Function,Real" Optional="false">The script to run each game frame</Parameter>
		</Function>
		<Function Name="camera_set_proj_mat" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will set the projection matrix for a given camera. You give the unique camera ID value (as returned by the different camera_create() functions) and a projection matrix to be applied. You can find out more about creating projection matrices from the section Matrix Functions, specifically matrix_build_projection_perspective() and matrix_build_projection_ortho().</Description>
			<Parameter Name="camera_id" Type="Id.Camera" Optional="false">The unique camera ID value returned when you created the camera.</Parameter>
			<Parameter Name="matrix" Type="Array" Optional="false">The unique matrix ID returned when you created the matrix.</Parameter>
		</Function>
		<Function Name="camera_set_update_script" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set a script function that will be called every game frame that the camera is assigned to a visible and active view port. You give the unique camera ID value (as returned by the different camera_create functions) and the ID of the function to be called. The order in which functions attached to cameras and the actual rendering of the camera view is as follows:</Description>
			<Parameter Name="camera_id" Type="Id.Camera" Optional="false">The unique camera ID value returned when you created the camera.</Parameter>
			<Parameter Name="script" Type="Function,Real" Optional="false">The script function to run each game frame</Parameter>
		</Function>
		<Function Name="camera_set_view_angle" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>You can use this function to update the angle of the view camera within the room. You give the unique camera ID value (as returned by the different camera_create() functions) and then give the angle that you wish to set the camera view to. The default value is 0° with positive values rotating the camera counter-clockwise, ie: setting the value to 90 will rotate the camera 90° to the left.</Description>
			<Parameter Name="camera_id" Type="Id.Camera" Optional="false">The unique camera ID value returned when you created the camera</Parameter>
			<Parameter Name="angle" Type="Real" Optional="false">The new angle to set the camera view to</Parameter>
		</Function>
		<Function Name="camera_set_view_border" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>You can use this function to set the follow border of the view camera within the room. You give the unique camera ID value (as returned by the different camera_create functions) and then give the x border size and the y border size (horizontal and vertical). These values will only be used when the view camera has been assigned an instance target to follow (either in the Room Editor or using the function camera_set_view_target()) and relate to how far from the border of the view the instance needs to be before the view will update its position to follow.</Description>
			<Parameter Name="camera_id" Type="Id.Camera" Optional="false">The unique camera ID value returned when you created the camera.</Parameter>
			<Parameter Name="x_border" Type="Real" Optional="false">The border (in pixels) for the view camera along the horizontal axis</Parameter>
			<Parameter Name="y_border" Type="Real" Optional="false">The border (in pixels) for the view camera along the vertical axis</Parameter>
		</Function>
		<Function Name="camera_set_view_mat" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will set the view matrix for a given camera. You give the unique camera ID value (as returned by the different camera_create() functions) and a view matrix to be applied. You can find out more about creating view matrices from the section Matrix Functions, specifically matrix_build_lookat().</Description>
			<Parameter Name="camera_id" Type="Id.Camera" Optional="false">The unique camera ID value returned when you created the camera.</Parameter>
			<Parameter Name="matrix" Type="Array" Optional="false">The unique matrix ID returned when you created the matrix.</Parameter>
		</Function>
		<Function Name="camera_set_view_pos" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>You can use this function to update the position of the camera view within the room. You give the unique camera ID value (as returned by the different camera_create() functions) and then give the x and y positions to set the camera to.</Description>
			<Parameter Name="camera_id" Type="Id.Camera" Optional="false">The unique camera ID value returned when you created the camera.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position to place the view at (in the room)</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position to place the view at (in the room)</Parameter>
		</Function>
		<Function Name="camera_set_view_size" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>You can use this function to update the size of the view camera within the room. You give the unique camera ID value (as returned by the different camera_create() functions) and then give the width and height (in pixels) to set the camera to.</Description>
			<Parameter Name="camera_id" Type="Id.Camera" Optional="false">The unique camera ID value returned when you created the camera.</Parameter>
			<Parameter Name="width" Type="Real" Optional="false">The width of the camera view in pixels</Parameter>
			<Parameter Name="height" Type="Real" Optional="false">The height of the camera view in pixels</Parameter>
		</Function>
		<Function Name="camera_set_view_speed" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>You can use this function to update the speed of the view camera within the room. You give the unique camera ID value (as returned by the different camera_create() functions) and then give the x and y (horizontal and vertical) speed that it should move when set to follow a given instance. The speed is calculated as pixels per step and can be set to &quot;-1&quot; to make the camera move instantly, but if the camera is not set to follow any instance then the values set here will have no visible effect.</Description>
			<Parameter Name="camera_id" Type="Id.Camera" Optional="false">The unique camera ID value returned when you created the camera.</Parameter>
			<Parameter Name="xspeed" Type="Real" Optional="false">The speed (number of pixels per game frame) that the view should move on the horizontal (x) axis</Parameter>
			<Parameter Name="yspeed" Type="Real" Optional="false">The speed (number of pixels per game frame) that the view should move on the vertical (y) axis</Parameter>
		</Function>
		<Function Name="camera_set_view_target" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>You can use this function to set the follow target of the view camera within the room. You give the unique camera ID value (as returned by the different camera_create() functions) and then give the target instance or object ID that you wish to set the camera view to. Note that if you choose an object ID and there is more than one instance of that object in the room, there is no way for GameMaker to know which instance you wish to follow and so it could be any of them.</Description>
			<Parameter Name="camera_id" Type="Id.Camera" Optional="false">The unique camera ID value returned when you created the camera</Parameter>
			<Parameter Name="instance_id/object_id" Type="Any" Optional="false">Instance or object to have the camera target for following</Parameter>
		</Function>
		<Function Name="view_get_camera" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to retrieve the unique camera ID value for the camera assigned to the given view port (from 0 - 7). If no camera is assigned, the function will return -1.</Description>
			<Parameter Name="view_port" Type="Real" Optional="false">The view port to target (0 - 7)</Parameter>
		</Function>
		<Function Name="view_get_hport" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to retrieve the height of the given view port.</Description>
			<Parameter Name="view_port" Type="Real" Optional="false">The view port to target (0 - 7)</Parameter>
		</Function>
		<Function Name="view_get_surface_id" Deprecated="false" ReturnType="Id.Surface" Pure="true">
			<Description>This function can be used to retrieve the unique ID value for the surface assigned to the given view port (will return -1 if no surface has been assigned).</Description>
			<Parameter Name="view_port" Type="Real" Optional="false">The view port to target (0 - 7)</Parameter>
		</Function>
		<Function Name="view_get_visible" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function can be used to check the visibility of the given view port. The function will return true if it is visible and false if it is not.</Description>
			<Parameter Name="view_port" Type="Real" Optional="false">The view port to target (0 - 7)</Parameter>
		</Function>
		<Function Name="view_get_wport" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to retrieve the width of the given view port.</Description>
			<Parameter Name="view_port" Type="Real" Optional="false">The view port to target (0 - 7)</Parameter>
		</Function>
		<Function Name="view_get_xport" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to retrieve the x position of the given view port.</Description>
			<Parameter Name="view_port" Type="Real" Optional="false">The view port to target (0 - 7)</Parameter>
		</Function>
		<Function Name="view_get_yport" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to retrieve the y position of the given view port.</Description>
			<Parameter Name="view_port" Type="Real" Optional="false">The view port to target (0 - 7)</Parameter>
		</Function>
		<Function Name="view_set_camera" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will set a camera to a specific view port. You give the view port to set (from 0 to 7), and supply the unique camera ID value (as returned by the camera_create() functions or when you use view_get_camera()). If you give a value of -1 as the camera ID then you are removing a camera from the view port and note that if that view port is enabled and visible you may get some unpredictable results.</Description>
			<Parameter Name="view_port" Type="Real" Optional="false">The view port to target (0 - 7)</Parameter>
			<Parameter Name="camera_id" Type="Id.Camera" Optional="false">The unique camera ID value returned when you created the camera</Parameter>
		</Function>
		<Function Name="view_set_hport" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>This function can be used to set the height of the given view port. You give the view port index (from 0 to 7) and the new height to use.</Description>
			<Parameter Name="view_port" Type="Real" Optional="false">The view port to target (0 - 7)</Parameter>
			<Parameter Name="h" Type="Real" Optional="false">The new height (in pixels)</Parameter>
		</Function>
		<Function Name="view_set_surface_id" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this variable you can set the contents of a view port to draw to a surface. When working with surfaces, it is often required to capture the whole visible region of the screen to the surface, and so you would assign it to a view port using this function. This means that everything that is shown in the chosen view port will now be drawn to the assigned surface and the contents of that view port will no longer be displayed, meaning that you will need to either:</Description>
			<Parameter Name="view_port" Type="Real" Optional="false">The view port to target (0 - 7)</Parameter>
			<Parameter Name="surface_id" Type="Id.Surface" Optional="false" />
		</Function>
		<Function Name="view_set_visible" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set the visibility of the given view port. The function takes the view port index (from 0 to 7) and a boolean true if it is visible and false if it is not.</Description>
			<Parameter Name="view_port" Type="Real" Optional="false">The view port to target (0 - 7)</Parameter>
			<Parameter Name="visible" Type="Bool" Optional="false">Visibility toggle (true is visible and false is invisible)</Parameter>
		</Function>
		<Function Name="view_set_wport" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>This function can be used to set the width of the given view port. You give the view port index (from 0 to 7) and the new width to use.</Description>
			<Parameter Name="view_port" Type="Real" Optional="false">The view port to target (0 - 7)</Parameter>
			<Parameter Name="w" Type="Real" Optional="false">The new width (in pixels)</Parameter>
		</Function>
		<Function Name="view_set_xport" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set the x position of the given view port. You give the view port index (from 0 to 7) and the new position to place it at.</Description>
			<Parameter Name="view_port" Type="Real" Optional="false">The view port to target (0 - 7)</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The new x position</Parameter>
		</Function>
		<Function Name="view_set_yport" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set the y position of the given view port. You give the view port index (from 0 to 7) and the new position to place it at.</Description>
			<Parameter Name="view_port" Type="Real" Optional="false">The view port to target (0 - 7)</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The new y position</Parameter>
		</Function>
		<Function Name="window_center" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can center the game window in the display when the target module is Windows, Ubuntu (Linux) or macOS, or you can center it in the browser if the target module is HTML5. This function has no effect on any other device.</Description>
		</Function>
		<Function Name="window_device" Deprecated="false" ReturnType="Pointer" Pure="true">
			<Description>This function will return the current d3d device pointer, which you can then (for example) pass through to a DLL or Dylib on Windows and macOS.</Description>
		</Function>
		<Function Name="window_get_showborder" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>Returns whether the border around the window is shown in windowed mode.</Description>
		</Function>
		<Function Name="window_get_caption" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function returns the caption of the window (this is the text that appears on the top of the window, beside its icon) and by default this shows the caption of the room you&apos;re currently in.</Description>
		</Function>
		<Function Name="window_get_colour" Deprecated="false" ReturnType="Constant.Color" Locale="GB" Pure="true">
			<Description>This function returns the background colour of the game window. This colour represents that which will be used for those areas of the game window that are not occupied by any views. The following image illustrates this:</Description>
		</Function>
		<Function Name="window_get_cursor" Deprecated="false" ReturnType="Constant.Cursor" Pure="true">
			<Description>With this function you can get the current cursor being used in the game window, with the return value being any one of the constants listed below (to set the current cursor being used you can use the function window_set_cursor() which also takes these constants):</Description>
		</Function>
		<Function Name="window_get_fullscreen" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function returns whether the game window is in fullscreen mode (true) or not (false).</Description>
		</Function>
		<Function Name="window_get_height" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the current height (in pixels) of the game window.</Description>
		</Function>
		<Function Name="window_get_visible_rects" Deprecated="false" ReturnType="Array[Real]" Pure="true">
			<Description>With this function you can find the overlapping region of the rectangle defined by (x1,y1) to (x2,y2) on each of the attached displays. The function will return an array with 8 values per display (ie: if you have two displays, the array will have a length of 16 indices), where the values [0 ... 3] correspond to the overlapx1, overlapy1, overlapx2, overlapy2 - defining the region of overlap on this display and will be set to 0,0,0,0 if no overlap - and the values [4 ... 7] corresponds to the monitorx1, monitory1, monitorx2, monitory2 - the coordinates of the display in the virtual display space. This can be used to test whether a saved window position is going to be visible or not (the user may have disconnected an external monitor or moved the window off screen which left the window position that was saved as not being valid), for example.</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The left edge of the rectangle to check</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The top edge of the rectangle to check.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The right edge of the rectangle to check</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The bottom edge of the rectangle to check.</Parameter>
		</Function>
		<Function Name="window_get_width" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the current width (in pixels) of the game window.</Description>
		</Function>
		<Function Name="window_get_x" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the x position (in pixels) within the browser if it is an HTML5 game or within the display if it is a Windows, Ubuntu (Linux) or macOS game.</Description>
		</Function>
		<Function Name="window_get_y" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the y position (in pixels) within the browser if it is an HTML5 game or within the display if it is a Windows, Ubuntu (Linux) or macOS game.</Description>
		</Function>
		<Function Name="window_handle" Deprecated="false" ReturnType="Pointer" Pure="true">
			<Description>With this function you can get the internal Windows id value (the HWND, a pointer). This function is really only useful for extension writers who need the window handle to call Windows API&apos;s in DLL code (the returned pointer should be cast into a string and then in the C++ just cast it to an HWND). The table below shows the platforms supported along with what they return:</Description>
		</Function>
		<Function Name="window_has_focus" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can poll the window (or tab) state and if it loses focus the function will return false otherwise it will return true. In most cases you can simply use the os_is_paused() function to test this, but in some very specific cases (for example games on Chrome Apps) that function will not trigger, in which case you should use this function instead.</Description>
		</Function>
		<Function Name="window_mouse_get_x" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the x position of the mouse cursor (in pixels) within the browser if it is an HTML5 game or within the display if it is a Windows, Ubuntu (Linux) or macOS game.</Description>
		</Function>
		<Function Name="window_mouse_get_y" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the y position of the mouse cursor (in pixels) within the browser if it is an HTML5 game or within the display if it is a Windows, Ubuntu (Linux) or macOS game.</Description>
		</Function>
		<Function Name="window_mouse_set" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can change or set the position of the mouse within the game window which can be useful for FPS games, for example. The function will only work while the game is in focus and using alt + tab will unlock the mouse.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate in the window.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate in the window.</Parameter>
		</Function>
		<Function Name="window_set_showborder" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Sets whether the border around the window is shown in windowed mode.</Description>
			<Parameter Name="show" Type="Bool" Optional="false">Whether to show the window border (true) or not (false).</Parameter>
		</Function>
		<Function Name="window_set_caption" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can change or set the windows caption for the room that you are currently in. This caption appears at the top of the window, beside the game icon, when the game is not in full screen mode.</Description>
			<Parameter Name="caption" Type="String" Optional="false">The new caption.</Parameter>
		</Function>
		<Function Name="window_set_colour" Deprecated="false" ReturnType="Undefined" Locale="GB" Pure="false">
			<Description>This function can set the background colour of the game window. This colour represents that which will be used for those areas of the game window that are not occupied by any views. The following image illustrates this:</Description>
			<Parameter Name="colour" Type="Constant.Color" Optional="false">The colour to set the region.</Parameter>
		</Function>
		<Function Name="window_set_cursor" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the cursor for the game window to any one of the constants listed below (to find the current cursor being used you can use the function window_get_cursor() which will also return one of these constants):</Description>
			<Parameter Name="cursor" Type="Constant.Cursor" Optional="false">The cursor to set for the game window.</Parameter>
		</Function>
		<Function Name="window_set_fullscreen" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the game window to be full screen (true) or not (false). Please note that for the macOS target, you must have unchecked the &quot;Start In Fullscreen&quot; option and checked the &quot;Allow the player to resize the game window&quot; option in the Game Options, otherwise this function will fail. Also note that this function will not work on HTML5 unless it&apos;s added in as a &quot;clickable&quot; callback (see here for more details).</Description>
			<Parameter Name="full" Type="Bool" Optional="false">Whether to set the screen to fullscreen (true) or not (false).</Parameter>
		</Function>
		<Function Name="window_set_max_height" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function can be used to set a maximum window height for your game. If you enable the window resize option in the Game Options for the target platform, then the player can resize the game window to any size they wish, however by using this function you can limit the maximum height to the size you specify. If you wish to go back to the default behaviour (ie: no minimum), then use a value of -1.</Description>
			<Parameter Name="height" Type="Real" Optional="false">The maximum height in pixels for the game window.</Parameter>
		</Function>
		<Function Name="window_set_max_width" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function can be used to set a maximum window width for your game. If you enable the window resize option in the Game Options for the target platform, then the player can resize the game window to any size they wish, however by using this function you can limit the maximum width to the size you specify. If you wish to go back to the default behaviour (ie: no minimum), then use a value of -1.</Description>
			<Parameter Name="width" Type="Real" Optional="false">The maximum width in pixels for the game window.</Parameter>
		</Function>
		<Function Name="window_set_min_height" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function can be used to set a minimum window height for your game. If you enable the window resize option in the Game Options for the target platform, then the player can resize the game window to any size they wish, however by using this function you can limit the minimum height to the size you specify. If you wish to go back to the default behaviour (ie: no minimum), then use a value of -1.</Description>
			<Parameter Name="height" Type="Real" Optional="false">The minimum height in pixels for the game window.</Parameter>
		</Function>
		<Function Name="window_set_min_width" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function can be used to set a minimum window width for your game. If you enable the window resize option in the Game Options for the target platform, then the player can resize the game window to any size they wish, however by using this function you can limit the minimum width to the size you specify. If you wish to go back to the default behaviour (ie: no minimum), then use a value of -1.</Description>
			<Parameter Name="width" Type="Real" Optional="false">The minimum width in pixels for the game window.</Parameter>
		</Function>
		<Function Name="window_set_position" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the game window to a specific position within the display (on macOS, Linux(Ubuntu) and Windows) or within the browser (HTML5).</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of where to position the window.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of where to position the window.</Parameter>
		</Function>
		<Function Name="window_set_rectangle" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can set the position of the game window within the browser (HTML5) or display (Windows, Ubuntu (Linux) or macOS) and set the scale of the window too. For more information on window position and window size, see window_set_position() and window_set_size().</Description>
			<Parameter Name="x" Type="Real" Optional="false">The new x coordinate of the window.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The new y coordinate of the window.</Parameter>
			<Parameter Name="w" Type="Real" Optional="false">The new width of the window.</Parameter>
			<Parameter Name="h" Type="Real" Optional="false">The new height of the window.</Parameter>
		</Function>
		<Function Name="window_set_size" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can change the size of the game window. If you use this function to change the size of the game window, the contents of the window will be scaled to fit with a 1:1 ratio to the background canvas which will keep the image crisp and clear (although scaled if the window is other than the room or view size). For example, if you have a 200 x 150 pixel window, and the player stretches the window by dragging the borders, the final window size may be 400 x 300 pixels, but the drawing canvas is STILL 200 x 150, which gives a blurred image as the pixel ratio is now 1:2. However, if you use this function to set the window size, the 1:1 ratio is maintained, even though the image is scaled to fit the new window size.</Description>
			<Parameter Name="w" Type="Real" Optional="false">The new width of the window.</Parameter>
			<Parameter Name="h" Type="Real" Optional="false">The new height of the window.</Parameter>
		</Function>
		<Function Name="window_views_mouse_get_x" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the x-coordinate of the mouse with respect to all the active views and returns the same value mouse_x.</Description>
		</Function>
		<Function Name="window_views_mouse_get_y" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the y-coordinate of the mouse with respect to all the active views and returns the same value mouse_y.</Description>
		</Function>
		<Function Name="window_view_mouse_get_x" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the mouse x position relative to the view selected.</Description>
			<Parameter Name="id" Type="Any" Optional="false">The id of the view to compare the mouse position to.</Parameter>
		</Function>
		<Function Name="window_view_mouse_get_y" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the mouse y position relative to the view selected.</Description>
			<Parameter Name="id" Type="Any" Optional="false">The id of the view to compare the mouse position to.</Parameter>
		</Function>
		<Function Name="ds_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check to see if a data structure of the given type exists. You supply the &quot;index&quot; value (as held in a variable) and the DS &quot;type&quot;, which can be any of the constants listed below, and the function will return true if the data structure exists and false otherwise.</Description>
			<Parameter Name="ind" Type="Any" Optional="false">The variable index to check for the data structure</Parameter>
			<Parameter Name="type" Type="Constant.DsType" Optional="false">The type of data structure to check for (see the list of constants below)</Parameter>
		</Function>
		<Function Name="ds_set_precision" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>When comparing values, for example when searching in a map or sorting a list, GameMaker must decide when two values are equal. For strings and integer values this is clear but for real numbers, due to floating point round-off errors, seemingly equal numbers can easily become unequal. For example, it&apos;s possible that (5 / 3) * 3 will not be equal to 5! To help avoid this, a precision value is used on all real number functions, and when the difference between two numbers is smaller than this precision they are considered equal. The default a precision of 0.0000001 is used for all data structure functions unless changed by this function.</Description>
			<Parameter Name="prec" Type="Real" Optional="false">The precision value (default 0.0000001)</Parameter>
		</Function>
		<Function Name="ds_grid_add" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to add a given value (real or string) to the value of the given cell within the grid. The value to be added must be the same type as that held within the grid cell, ie: you cannot add a string to a real or vice-versa, and for strings this corresponds to concatenation.</Description>
			<Parameter Name="index" Type="Id.DsGrid" Coerce="true" Optional="false">The index of the grid.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position of the cell in the grid.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position of the cell in the grid.</Parameter>
			<Parameter Name="val" Type="ArgumentIdentity" Optional="false">The value to add to the cell.</Parameter>
		</Function>
		<Function Name="ds_grid_add_disk" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to add a given value (real or string) to all the values of the cells found within the defined disk area of a grid. The value to be added must be of the same type as that held within the grid cells, ie: you cannot add a string to a real or vice-versa, and for strings this corresponds to concatenation.</Description>
			<Parameter Name="index" Type="Id.DsGrid" Coerce="true" Optional="false">The index of the grid.</Parameter>
			<Parameter Name="xm" Type="Real" Optional="false">The x position of the disk on the grid.</Parameter>
			<Parameter Name="ym" Type="Real" Optional="false">The y position of the disk on the grid.</Parameter>
			<Parameter Name="r" Type="Real" Optional="false">The radius of the disk on the grid.</Parameter>
			<Parameter Name="val" Type="ArgumentIdentity" Optional="false">The value to add to the cells within the disk.</Parameter>
		</Function>
		<Function Name="ds_grid_add_grid_region" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to add all the values of all the cells found within the source area of a grid to the values within the destination grid, as illustrated below:</Description>
			<Parameter Name="index" Type="Id.DsGrid" Optional="false">The index of the destination grid.</Parameter>
			<Parameter Name="source" Type="Id.DsGrid" Optional="false">The index of the source grid.</Parameter>
			<Parameter Name="x1" Type="Real" Optional="false">The left position of the region of cells to copy from the source grid.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The top position of the region of cells to copy from the source grid.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The right position of the region of cells to copy from the source grid.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The bottom position of the region of cells to copy from the source grid.</Parameter>
			<Parameter Name="xpos" Type="Real" Optional="false">The x position on the destination grid to add the source region to.</Parameter>
			<Parameter Name="ypos" Type="Real" Optional="false">The y position on the destination grid to add the source region to.</Parameter>
		</Function>
		<Function Name="ds_grid_add_region" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to add a given value (real or string) to all the values of the cells found within the defined area of a grid. The value to be added must be of the same type as that held within the grid cells, ie: you cannot add a string to a real or vice-versa, and for strings this corresponds to concatenation.</Description>
			<Parameter Name="index" Type="Id.DsGrid" Coerce="true" Optional="false">The index of the grid.</Parameter>
			<Parameter Name="x1" Type="Real" Optional="false">The x position of the left of the region in the grid.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y position of the top of the region in the grid.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x position of the right of the region in the grid.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y position of the bottom of the region in the grid.</Parameter>
			<Parameter Name="val" Type="ArgumentIdentity" Optional="false">The value to add to the region cells.</Parameter>
		</Function>
		<Function Name="ds_grid_clear" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to clear a given DS grid to a specific value. All cells within the grid will then contain this value, which can be a real number or a string. The image below illustrates how this works:</Description>
			<Parameter Name="index" Type="Id.DsGrid" Coerce="true" Optional="false">This index of the grid to clear.</Parameter>
			<Parameter Name="val" Type="ArgumentIdentity" Optional="false">The new value for all grid cells.</Parameter>
		</Function>
		<Function Name="ds_grid_copy" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can copy the contents of one grid into another one. Both grids must have been created previously using the ds_grid_create() function.</Description>
			<Parameter Name="destination" Type="Id.DsGrid" Optional="false">This index of the grid to copy to.</Parameter>
			<Parameter Name="source" Type="Id.DsGrid" Optional="false">This index of the grid to copy from.</Parameter>
		</Function>
		<Function Name="ds_grid_create" Deprecated="false" ReturnType="Id.DsGrid" Pure="true">
			<Description>With this function you can create a new DS grid data structure of the specified cell width and height. This function returns an id which must be used in all further functions that deal with this DS grid.</Description>
			<Parameter Name="w" Type="Real" Optional="false">The width of the grid to be created.</Parameter>
			<Parameter Name="h" Type="Real" Optional="false">The height of the grid to be created.</Parameter>
		</Function>
		<Function Name="ds_grid_destroy" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will remove the given grid data-structure from memory, freeing up the resources it was using and removing all values that it contained. This function should always be used when you are finished using the DS grid to prevent memory leaks that can slow down and crash your game.</Description>
			<Parameter Name="index" Type="Id.DsGrid" Optional="false">This index of the grid to destroy.</Parameter>
		</Function>
		<Function Name="ds_grid_get" Deprecated="false" ReturnType="ArgumentIdentity" Pure="true">
			<Description>This function can be used to get the value (either a real number or a string) from any cell within the given DS grid. If you pass invalid grid coordinates to the function, then the value returned will be undefined and an error will be shown in the output window.</Description>
			<Parameter Name="index" Type="Id.DsGrid" Optional="false">The index of the grid.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position of the cell you want to find the value of.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position of the cell you want to find the value of.</Parameter>
		</Function>
		<Function Name="ds_grid_get_disk_max" Deprecated="false" ReturnType="ArgumentIdentity" Pure="true">
			<Description>This function can be used to find the maximum value for all the cells found within the defined disk area of a grid, as shown in the image below:</Description>
			<Parameter Name="index" Type="Id.DsGrid" Optional="false">The index of the grid.</Parameter>
			<Parameter Name="xm" Type="Real" Optional="false">The x position of the disk center in the grid.</Parameter>
			<Parameter Name="ym" Type="Real" Optional="false">The y position of the disk center in the grid.</Parameter>
			<Parameter Name="r" Type="Real" Optional="false">The radius of the disk in the grid.</Parameter>
		</Function>
		<Function Name="ds_grid_get_disk_mean" Deprecated="false" ReturnType="ArgumentIdentity" Pure="true">
			<Description>This function can be used to find the mean value for all the cells found within the defined disk area of a grid (all cell values are added together and then divided by the total number of cells that make up the disk), as shown in the image below:</Description>
			<Parameter Name="index" Type="Id.DsGrid" Optional="false">The index of the grid.</Parameter>
			<Parameter Name="xm" Type="Real" Optional="false">The x position of the disk on the grid.</Parameter>
			<Parameter Name="ym" Type="Real" Optional="false">The y position of the disk on the grid.</Parameter>
			<Parameter Name="r" Type="Real" Optional="false">The radius of the disk on the grid.</Parameter>
		</Function>
		<Function Name="ds_grid_get_disk_min" Deprecated="false" ReturnType="ArgumentIdentity" Pure="true">
			<Description>This function can be used to find the minimum value for all the cells found within the defined disk area of a grid, as shown in the image below:</Description>
			<Parameter Name="index" Type="Id.DsGrid" Optional="false">The index of the grid.</Parameter>
			<Parameter Name="xm" Type="Real" Optional="false">The x position of the disk on the grid.</Parameter>
			<Parameter Name="ym" Type="Real" Optional="false">The y position of the disk on the grid.</Parameter>
			<Parameter Name="r" Type="Real" Optional="false">The radius of the disk on the grid.</Parameter>
		</Function>
		<Function Name="ds_grid_get_disk_sum" Deprecated="false" ReturnType="ArgumentIdentity" Pure="true">
			<Description>This function can be used to add all the values all the cells found within the defined disk area of a grid together, as shown in the image below:</Description>
			<Parameter Name="index" Type="Id.DsGrid" Optional="false">The index of the grid.</Parameter>
			<Parameter Name="xm" Type="Real" Optional="false">The x position of the disk on the grid.</Parameter>
			<Parameter Name="ym" Type="Real" Optional="false">The y position of the disk on the grid.</Parameter>
			<Parameter Name="r" Type="Real" Optional="false">The radius of the disk on the grid.</Parameter>
		</Function>
		<Function Name="ds_grid_get_max" Deprecated="false" ReturnType="ArgumentIdentity" Pure="true">
			<Description>This function can be used to find the maximum value for all the cells found within the defined region of a grid, as shown in the image below:</Description>
			<Parameter Name="index" Type="Id.DsGrid" Optional="false">The index of the grid.</Parameter>
			<Parameter Name="x1" Type="Real" Optional="false">The left cell column of the region.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The top cell row of the region.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The right cell column of the region.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The bottom cell row of the region.</Parameter>
		</Function>
		<Function Name="ds_grid_get_mean" Deprecated="false" ReturnType="ArgumentIdentity" Pure="true">
			<Description>This function can be used to find the mean value for all the cells found within the defined region of a grid (all cell values are added together and then divided by the total number of cells that make the region), as shown in the image below:</Description>
			<Parameter Name="index" Type="Id.DsGrid" Optional="false">The index of the grid.</Parameter>
			<Parameter Name="x1" Type="Real" Optional="false">The left cell column of the region.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The top cell row of the region.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The right cell column of the region.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The bottom cell row of the region.</Parameter>
		</Function>
		<Function Name="ds_grid_get_min" Deprecated="false" ReturnType="ArgumentIdentity" Pure="true">
			<Description>This function can be used to find the minimum value for all the cells found within the defined region of a grid, as shown in the image below:</Description>
			<Parameter Name="index" Type="Id.DsGrid" Optional="false">The index of the grid.</Parameter>
			<Parameter Name="x1" Type="Real" Optional="false">The left cell column of the region.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The top cell row of the region.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The right cell column of the region.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The bottom cell row of the region.</Parameter>
		</Function>
		<Function Name="ds_grid_get_sum" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to add all the values all the cells found within the defined region of a grid together, as shown in the image below:</Description>
			<Parameter Name="index" Type="Id.DsGrid" Optional="false">The index of the grid.</Parameter>
			<Parameter Name="x1" Type="Real" Optional="false">The left cell column of the region.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The top cell row of the region.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The right cell column of the region.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The bottom cell row of the region.</Parameter>
		</Function>
		<Function Name="ds_grid_height" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the height of the given grid. This value is the number of cells the grid has along the y-axis and is always an integer, as shown in the image below:</Description>
			<Parameter Name="index" Type="Id.DsGrid" Optional="false">This index of the grid to find the height of.</Parameter>
		</Function>
		<Function Name="ds_grid_multiply" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will multiply the value of a the given grid cell by the specified amount.</Description>
			<Parameter Name="index" Type="Id.DsGrid" Optional="false">The index of the grid.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position of the cell in the grid.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position of the cell in the grid.</Parameter>
			<Parameter Name="val" Type="Any" Optional="false">The value to multiply with the cell.</Parameter>
		</Function>
		<Function Name="ds_grid_multiply_disk" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will take all the values in a given disc-shaped region of the DS grid, and multiply each one by the given amount.</Description>
			<Parameter Name="index" Type="Id.DsGrid" Optional="false">The index of the grid.</Parameter>
			<Parameter Name="xm" Type="Real" Optional="false">The x position of the disk on the grid.</Parameter>
			<Parameter Name="ym" Type="Real" Optional="false">The y position of the disk on the grid.</Parameter>
			<Parameter Name="r" Type="Real" Optional="false">The radius of the disk on the grid.</Parameter>
			<Parameter Name="val" Type="Any" Optional="false">The value to multiply the cells within the disk with.</Parameter>
		</Function>
		<Function Name="ds_grid_multiply_grid_region" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can define an area within a given DS grid, then take those values and multiply them with those found in a separate region of either the same DS grid, or another one (which has been previously created). The original region will remain unchanged, while the region that they have been multiplied with will now store the new values for each cell.</Description>
			<Parameter Name="index" Type="Id.DsGrid" Optional="false">The index of the destination grid.</Parameter>
			<Parameter Name="source" Type="Id.DsGrid" Optional="false">The index of the source grid.</Parameter>
			<Parameter Name="x1" Type="Real" Optional="false">The left position of the region of cells to copy from the source grid.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The top position of the region of cells to copy from the source grid.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The right position of the region of cells to copy from the source grid.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The bottom position of the region of cells to copy from the source grid.</Parameter>
			<Parameter Name="xpos" Type="Real" Optional="false">The x position on the destination grid to multiply the source region with.</Parameter>
			<Parameter Name="ypos" Type="Real" Optional="false">The y position on the destination grid to multiply the source region with.</Parameter>
		</Function>
		<Function Name="ds_grid_multiply_region" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can specify a region of the grid in which to multiply each cell value by a given amount.</Description>
			<Parameter Name="index" Type="Id.DsGrid" Optional="false">The index of the grid.</Parameter>
			<Parameter Name="x1" Type="Real" Optional="false">The x position of the left of the region in the grid.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y position of the top of the region in the grid.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x position of the right of the region in the grid.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y position of the bottom of the region in the grid.</Parameter>
			<Parameter Name="val" Type="Any" Optional="false">The value to multiply with the region cells.</Parameter>
		</Function>
		<Function Name="ds_grid_read" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to convert a string which has been created previously by the function ds_grid_write() back into a DS grid. The DS grid must have been created previously (see the example below).</Description>
			<Parameter Name="index" Type="Id.DsGrid" Optional="false">The index of the grid to read.</Parameter>
			<Parameter Name="string" Type="String" Optional="false">The string to read into the DS grid.</Parameter>
			<Parameter Name="legacy (optional)" Type="Bool" Optional="true">Can be either true or false or omitted completely.</Parameter>
		</Function>
		<Function Name="ds_grid_resize" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can resize the given DS grid to have a different width and/or height. If the grid size is larger than the current grid, the new cells will have a base value of 0, and if the size is smaller then the values held in the cells that are no longer within the new size will be lost. All other cells will be left untouched.</Description>
			<Parameter Name="index" Type="Id.DsGrid" Optional="false">This index of the grid to resize.</Parameter>
			<Parameter Name="w" Type="Real" Optional="false">The new width of the grid.</Parameter>
			<Parameter Name="h" Type="Real" Optional="false">The new height of the grid.</Parameter>
		</Function>
		<Function Name="ds_grid_set" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set a given cell within the given DS grid to any value, which can be a real number or a string. The image below illustrates this:</Description>
			<Parameter Name="index" Type="Id.DsGrid" Coerce="true" Optional="false">This index of the grid.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position of the cell to set.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position of the cell to set.</Parameter>
			<Parameter Name="value" Type="ArgumentIdentity" Optional="false">The value with which to set the cell.</Parameter>
		</Function>
		<Function Name="ds_grid_set_disk" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set a circular region of a grid to a certain value. You need to supply a starting grid cell (as an x and y axis coordinate) as well as the radius of the disk to set and the value that you wish to set the disk too, as shown by the illustration below:</Description>
			<Parameter Name="index" Type="Id.DsGrid" Coerce="true" Optional="false">The index of the grid.</Parameter>
			<Parameter Name="xm" Type="Real" Optional="false">The x position of the disk on the grid.</Parameter>
			<Parameter Name="ym" Type="Real" Optional="false">The y position of the disk on the grid.</Parameter>
			<Parameter Name="r" Type="Real" Optional="false">The radius of the disk on the grid.</Parameter>
			<Parameter Name="val" Type="ArgumentIdentity" Optional="false">The value to set with the cells within the disk.</Parameter>
		</Function>
		<Function Name="ds_grid_set_grid_region" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to copy the contents of a rectangular area of grid cells from one (previously defined) DS grid to another, or it can be used to copy a region from within the same grid. The following images illustrate both ways that this function can be used:</Description>
			<Parameter Name="index" Type="Id.DsGrid" Optional="false">The index of the destination grid.</Parameter>
			<Parameter Name="source" Type="Id.DsGrid" Optional="false">The index of the source grid.</Parameter>
			<Parameter Name="x1" Type="Real" Optional="false">The left position of the region of cells to copy from the source grid.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The top position of the region of cells to copy from the source grid.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The right position of the region of cells to copy from the source grid.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The bottom position of the region of cells to copy from the source grid.</Parameter>
			<Parameter Name="xpos" Type="Real" Optional="false">The x position on the destination grid to copy the source region to.</Parameter>
			<Parameter Name="ypos" Type="Real" Optional="false">The y position on the destination grid to copy the source region to.</Parameter>
		</Function>
		<Function Name="ds_grid_set_region" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set a rectangular region of a given grid to a specified value (which can be either a real or a string) as illustrated by the image shown below:</Description>
			<Parameter Name="index" Type="Id.DsGrid" Coerce="true" Optional="false">The index of the grid.</Parameter>
			<Parameter Name="x1" Type="Real" Optional="false">The x position of the left of the region in the grid.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y position of the top of the region in the grid.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x position of the right of the region in the grid.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y position of the bottom of the region in the grid.</Parameter>
			<Parameter Name="val" Type="ArgumentIdentity" Optional="false">The value to set the region cells to.</Parameter>
		</Function>
		<Function Name="ds_grid_shuffle" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to randomise the positions of all values in all cells within a grid.</Description>
			<Parameter Name="index" Type="Id.DsGrid" Optional="false">The index of the grid to shuffle.</Parameter>
		</Function>
		<Function Name="ds_grid_sort" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function can be used to sort a DS grid based on the values from a given column (much as you would sort files by date, size etc... in the OS file explorer). The following image shows an example:</Description>
			<Parameter Name="index" Type="Id.DsGrid" Optional="false">The index of the grid to sort.</Parameter>
			<Parameter Name="column" Type="Real" Optional="false">The column to use for sorting the rows</Parameter>
			<Parameter Name="ascending" Type="Bool" Optional="false">Whether to sort lowest to highest (true), or highest to lowest (false).</Parameter>
		</Function>
		<Function Name="ds_grid_value_disk_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check to see if a specific value (real or string) is present within a circular area of a given DS grid. If it is present the function will return true otherwise it will return false.</Description>
			<Parameter Name="index" Type="Id.DsGrid" Optional="false">The index of the grid.</Parameter>
			<Parameter Name="xm" Type="Real" Optional="false">The x position of the disk on the grid.</Parameter>
			<Parameter Name="ym" Type="Real" Optional="false">The y position of the disk on the grid.</Parameter>
			<Parameter Name="r" Type="Real" Optional="false">The radius of the disk on the grid.</Parameter>
			<Parameter Name="val" Type="Any" Optional="false">The value to find.</Parameter>
		</Function>
		<Function Name="ds_grid_value_disk_x" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the x coordinate (within the given grid disc-shaped region) of the value being searched for. You give the DS grid index (as returned by ds_grid_create()) along with the x/y positions for the center cell of the disk. Then you give the radius (as an integer value) around the center cell to search, before supplying the value to search for. If the value being searched for does not exist, then the function will return -1.</Description>
			<Parameter Name="index" Type="Id.DsGrid" Optional="false">The index of the grid.</Parameter>
			<Parameter Name="xm" Type="Real" Optional="false">The x position of the disk on the grid.</Parameter>
			<Parameter Name="ym" Type="Real" Optional="false">The y position of the disk on the grid.</Parameter>
			<Parameter Name="r" Type="Real" Optional="false">The radius of the disk on the grid.</Parameter>
			<Parameter Name="val" Type="Any" Optional="false">The value to find.</Parameter>
		</Function>
		<Function Name="ds_grid_value_disk_y" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the y coordinate (within the given grid disc-shaped region) of the value being searched for. You give the DS grid index (as returned by ds_grid_create()) along with the x/y positions for the center cell of the disk. Then you give the radius (as an integer value) around the center cell to search, before supplying the value to search for. If the value being searched for does not exist, then the function will return -1.</Description>
			<Parameter Name="index" Type="Id.DsGrid" Optional="false">The index of the grid.</Parameter>
			<Parameter Name="xm" Type="Real" Optional="false">The x position of the disk on the grid.</Parameter>
			<Parameter Name="ym" Type="Real" Optional="false">The y position of the disk on the grid.</Parameter>
			<Parameter Name="r" Type="Real" Optional="false">The radius of the disk on the grid.</Parameter>
			<Parameter Name="val" Type="Any" Optional="false">The value to find.</Parameter>
		</Function>
		<Function Name="ds_grid_value_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check to see if a specific value (real or string) is present within a rectangular area of a given DS grid. If it is present the function will return true otherwise it will return false.</Description>
			<Parameter Name="index" Type="Id.DsGrid" Optional="false">The index of the grid.</Parameter>
			<Parameter Name="x1" Type="Real" Optional="false">The x position of the left of the region in the grid.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y position of the top of the region in the grid.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x position of the right of the region in the grid.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y position of the bottom of the region in the grid.</Parameter>
			<Parameter Name="val" Type="Any" Optional="false">The value to find.</Parameter>
		</Function>
		<Function Name="ds_grid_value_x" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the x coordinate (within the given rectangular grid region) of the value being searched for. You give the DS grid index (as returned by ds_grid_create()) along with the x/y positions for the top left and bottom right corners of the grid region to search, before supplying the value to search for. If the value being searched for does not exist, then the function will return -1.</Description>
			<Parameter Name="index" Type="Id.DsGrid" Optional="false">The index of the grid.</Parameter>
			<Parameter Name="x1" Type="Real" Optional="false">The x position of the left of the region in the grid, from 0 to (grid width - 1).</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y position of the top of the region in the grid, from 0 to (grid height - 1).</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x position of the right of the region in the grid, from 0 to (grid width - 1).</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y position of the bottom of the region in the grid, from 0 to (grid height - 1).</Parameter>
			<Parameter Name="val" Type="Any" Optional="false">The value to find.</Parameter>
		</Function>
		<Function Name="ds_grid_value_y" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the y coordinate (within the given rectangular grid region) of the value being searched for. You give the DS grid index (as returned by ds_grid_create()) along with the x/y positions for the top left and bottom right corners of the grid region to search, before supplying the value to search for. If the value being searched for does not exist, then the function will return -1.</Description>
			<Parameter Name="index" Type="Id.DsGrid" Optional="false">The index of the grid.</Parameter>
			<Parameter Name="x1" Type="Real" Optional="false">The x position of the left of the region in the grid, from 0 to (grid width - 1).</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y position of the top of the region in the grid, from 0 to (grid height - 1).</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x position of the right of the region in the grid, from 0 to (grid width - 1).</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y position of the bottom of the region in the grid, from 0 to (grid height - 1)</Parameter>
			<Parameter Name="val" Type="Any" Optional="false">The value to find.</Parameter>
		</Function>
		<Function Name="ds_grid_width" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the width of the given grid. This value is the number of cells the grid has along the x-axis and is always an integer, as shown in the image below:</Description>
			<Parameter Name="index" Type="Id.DsGrid" Optional="false">This index of the grid to find the width of.</Parameter>
		</Function>
		<Function Name="ds_grid_write" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function can be used to convert the given ds_grid into a string, which can then be stored in an external file (for example). You can read the returned string from this function back into a ds_grid using the function ds_grid_read().</Description>
			<Parameter Name="index" Type="Id.DsGrid" Optional="false">The index of the grid to write.</Parameter>
		</Function>
		<Function Name="ds_list_add" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to add a new value (real or string) to the list, which will be added on at the end. The function can take further optional arguments (as many as you require), permitting you to add multiple values consecutively to the list in a single call.</Description>
			<Parameter Name="id" Type="Id.DsList" Optional="false" Coerce="true">The id of the list to add to.</Parameter>
			<Parameter Name="..." Type="ArgumentIdentity" Optional="false">The value to add to the list.</Parameter>
		</Function>
		<Function Name="ds_list_clear" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can clear all data from the given list data-structure. This does NOT destroy the data-structure (for that you should use ds_list_destroy()) it only wipes all data from it and makes the list empty (zero in size). Note that clearing a list will de-reference any data structures stored in it giving a memory leak, so you would need to go through the list and destroy all data structure items manually before clearing it to prevent this. The only time this is not required is when you have flagged any items in the list as another DS list or as a DS map, in which case these items will be destroyed (not cleared!) and their memory cleaned up automatically when the parent is cleared.</Description>
			<Parameter Name="id" Type="Id.DsList" Optional="false">The id of the data structure to clear.</Parameter>
		</Function>
		<Function Name="ds_list_copy" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can copy the contents of one list into another. Both lists must have been created previously and if the list being copied to already has information within it, this list will be cleared first. The end result is two independent lists which contain the same information.</Description>
			<Parameter Name="id" Type="Id.DsList" Optional="false">The id of the list being copied to.</Parameter>
			<Parameter Name="source" Type="Id.DsList" Optional="false">The id of the list to be copied from.</Parameter>
		</Function>
		<Function Name="ds_list_create" Deprecated="false" ReturnType="Id.DsList" Pure="true">
			<Description>This function will create a new list data-structure and return the index value. This value should be stored in a variable and used in all further function calls relating to the list. Note that if you try and access a value in the list before it has been populated - i.e. the list is &quot;empty&quot; - then the return value may be 0 since internally the first few entries in the list are set when created to minimize performance issues when initially adding items to the list (although the ds_list_size() function will still return 0 on a newly created list). If you wish to ensure that the list is &quot;truly&quot; empty on create, then you should call ds_list_clear() after creating the list, which will then mean that any values returned for unpopulated list slots will be undefined.</Description>
		</Function>
		<Function Name="ds_list_delete" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can remove the value stored at a specific position within the list.</Description>
			<Parameter Name="id" Type="Id.DsList" Optional="false">The id of the list to change.</Parameter>
			<Parameter Name="pos" Type="Real" Optional="false">Where in the list to delete the value.</Parameter>
		</Function>
		<Function Name="ds_list_destroy" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will remove the given list data-structure from memory, freeing up the resources it was using and removing all values that it contained. This function should always be used when you are finished using the ds_list to prevent memory leaks that can slow down and crash your game. Note that destroying a list will de-reference any data structures stored in it giving a memory leak, so you would need to go through the list and destroy all data structure items manually before destroying it to prevent this. The only time this is not required is when you have flagged any items in the list as another DS list or as a DS map, in which case these items will be destroyed and their memory cleaned up automatically as well.</Description>
			<Parameter Name="id" Type="Id.DsList" Optional="false">The id of the data structure to remove.</Parameter>
		</Function>
		<Function Name="ds_list_empty" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check the given DS list to see if it is empty (returns true) or not (returns false).</Description>
			<Parameter Name="id" Type="Id.DsList" Optional="false">The id of the data structure to check.</Parameter>
		</Function>
		<Function Name="ds_list_find_index" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can check the given list for a value and the position within the list for that value will be returned. Note that if there are more than one entries in the list with the same value, the position of any one of them may be returned, and that if the value does not exist, then -1 will be returned. Note that the value can be an array, which you can check with the function is_array().</Description>
			<Parameter Name="id" Type="Id.DsList" Optional="false">The id of the list to use.</Parameter>
			<Parameter Name="val" Type="Any" Optional="false">The value to find.</Parameter>
		</Function>
		<Function Name="ds_list_find_value" Deprecated="false" ReturnType="ArgumentIdentity" Pure="true">
			<Description>With this function you can check the given list position and the value held within the list for that position will be returned. Note that if you give a position that is outside of the given list size (ie: position 11 in a 10 value list) then the function may return undefined or 0. This is because when you create the list, internally the first few entries in the list are set to 0 to minimize performance issues when initially adding items to the list (although the ds_list_size() function will still return 0 on a newly created list). If you wish to ensure that the list is &quot;truly&quot; empty on create, then you should call ds_list_clear() after creating the list, which will then mean that any values returned for unpopulated list slots will be undefined, which you can then check consistently using the is_undefined() function.</Description>
			<Parameter Name="id" Type="Id.DsList" Optional="false">The id of the list to use.</Parameter>
			<Parameter Name="pos" Type="Real" Optional="false">The position to look at, where 0 corresponds to the very beginning of the list and the final position is ds_list_size(id)-1.</Parameter>
		</Function>
		<Function Name="ds_list_insert" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will add the given value into the list at the given position. if the list contains more values after the given position, their position will be shifted up one to make room making the list larger by one.</Description>
			<Parameter Name="id" Type="Id.DsList" Coerce="true" Optional="false">The id of the list to add to.</Parameter>
			<Parameter Name="pos" Type="Real" Optional="false">The position to add the value, where 0 corresponds to the very beginning of the list and the final position is ds_list_size(id)-1.</Parameter>
			<Parameter Name="val" Type="ArgumentIdentity" Optional="false">The value to add to the list.</Parameter>
		</Function>
		<Function Name="ds_list_is_list" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check to see if another DS list is stored at the given position within a DS list. If the given position contains a DS list ID, then the function will return true otherwise it will return false.</Description>
			<Parameter Name="id" Type="Id.DsList" Optional="false">The id of the list to check.</Parameter>
			<Parameter Name="pos" Type="Real" Optional="false">The position within the list to check.</Parameter>
		</Function>
		<Function Name="ds_list_is_map" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check to see if a DS map is stored at the given position within a DS list. If the given position contains a DS map ID, then the function will return true otherwise it will return false.</Description>
			<Parameter Name="id" Type="Id.DsList" Optional="false">The id of the list to check.</Parameter>
			<Parameter Name="pos" Type="Real" Optional="false">The position within the list to check.</Parameter>
		</Function>
		<Function Name="ds_list_mark_as_list" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>This function will &quot;mark&quot; (or &quot;flag&quot;) a given position within a previously created DS list as holding another DS list. This functionality is required when encoding JSON strings (which you can create using json_encode()), but can also be useful when nesting data-structures, as items marked in this way will automatically be garbage collected (destroyed) when the parent DS list is destroyed. This means that you do not have to manually go through the list contents and destroy the marked data structures individually before destroying the &quot;parent&quot; list. However, if you delete the list position individually, the DS list it contained will not be garbage collected and you should call the appropriate DS list destroy function before deleting the item from the parent list position. Also note that if you call the function ds_list_clear() on a list, any items flagged as lists will be destroyed as well when the list is cleared.</Description>
			<Parameter Name="id" Type="Id.DsList" Optional="false">The id of the list to mark.</Parameter>
			<Parameter Name="pos" Type="Real" Optional="false">The position within the list to mark.</Parameter>
		</Function>
		<Function Name="ds_list_mark_as_map" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>This function will &quot;mark&quot; (or &quot;flag&quot;) a given position within a previously created DS list as holding a DS map. This functionality is required when encoding JSON strings (which you can create using json_encode()), but can also be useful when nesting data-structures, as items marked in this way will automatically be garbage collected (destroyed) when the parent DS list is destroyed. This means that you do not have to manually go through the list contents and destroy the marked data structures individually before destroying the &quot;parent&quot; list. However, if you delete the list position individually, the data structure it contained will not be garbage collected and you should call the appropriate DS map destroy function before deleting the parent list position. Also note that if you call the function ds_list_clear() on a list, any items flagged as maps will be destroyed as well when the list is cleared.</Description>
			<Parameter Name="id" Type="Id.DsList" Optional="false">The id of the list to mark.</Parameter>
			<Parameter Name="pos" Type="Real" Optional="false">The position within the list to mark.</Parameter>
		</Function>
		<Function Name="ds_list_read" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can recreate a saved DS list (one that has previously been written as a string using ds_list_write()). You must first create a new DS list to read the string into, and if the DS list already exists and has information stored in it, then this will be cleared before reading. This function is of vital importance when creating save/load mechanisms for your game.</Description>
			<Parameter Name="id" Type="Id.DsList" Optional="false">The id of the data structure to read into.</Parameter>
			<Parameter Name="str" Type="String" Optional="false">The string to read from.</Parameter>
			<Parameter Name="legacy (optional)" Type="Bool" Optional="true">Can be either true or false or omitted completely.</Parameter>
		</Function>
		<Function Name="ds_list_replace" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will replace the value at the given position for another one.</Description>
			<Parameter Name="id" Type="Id.DsList" Coerce="true" Optional="false">The id of the list to change.</Parameter>
			<Parameter Name="pos" Type="Real" Optional="false">The position to replace the value, where 0 corresponds to the very beginning of the list and the final position is ds_list_size(id)-1.</Parameter>
			<Parameter Name="val" Type="ArgumentIdentity" Optional="false">The new value to replace the given value with.</Parameter>
		</Function>
		<Function Name="ds_list_set" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set a previously added list entry. You give the list ID (as returned when you created the list) and the position within the list to set as well as the value to set it to. Note that if the entry being set is outside the bounds of the list (ie, you set list entry 20 but the current list only contains 10 entries) then the list will be filled to the given position and each entry will be set to 0. This function is the same as using the DS list accessor.</Description>
			<Parameter Name="id" Type="Id.DsList" Coerce="true" Optional="false">The id of the list to add to.</Parameter>
			<Parameter Name="pos" Type="Real" Optional="false">The position within the list to set.</Parameter>
			<Parameter Name="..." Type="ArgumentIdentity" Optional="true">The value to set in the list.</Parameter>
		</Function>
		<Function Name="ds_list_shuffle" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can shuffle a list, which will re-order all the component values into random positions from those in which they were originally added to the list.</Description>
			<Parameter Name="id" Type="Id.DsList" Optional="false">The id of the list to shuffle.</Parameter>
		</Function>
		<Function Name="ds_list_size" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the &quot;size&quot; of the list, ie: the number of items that have been added into it.</Description>
			<Parameter Name="id" Type="Id.DsList" Optional="false">The id of the data structure to check.</Parameter>
		</Function>
		<Function Name="ds_list_sort" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can sort all the values within a list, either in ascending or descending order. If the list contains strings, these will be sorted alphabetically, based on the English 26 letter alphabet.</Description>
			<Parameter Name="id" Type="Id.DsList" Optional="false">The id of the list to sort.</Parameter>
			<Parameter Name="ascend" Type="Bool" Optional="false">Whether the values should be ascending (true) or descending (false) order.</Parameter>
		</Function>
		<Function Name="ds_list_write" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function returns a string which can then be stored or transferred to another data structure using the ds_list_read() function.</Description>
			<Parameter Name="id" Type="Id.DsList" Optional="false">The id of the data structure to write.</Parameter>
		</Function>
		<Function Name="ds_map_add" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>This function should be used to add sets of key/value pairs into the specified DS map. You can check this function to see if it was successful or not (it will return true on success or false otherwise), as it may fail if there already exists the same key in the DS map or you specify a non-existent DS map as the ID of the map to add to. The keys and and values you supply can be made up of any combination of data types, so all of the following - and more - are acceptable (although, in practice, you would most commonly use a string for the key):</Description>
			<Parameter Name="id" Type="Id.DsMap" Coerce="true" Optional="false">The id of the map to add to.</Parameter>
			<Parameter Name="key" Type="Any" Optional="false">The key of the value to add.</Parameter>
			<Parameter Name="val" Type="ArgumentIdentity" Optional="false">The value to add to the map.</Parameter>
		</Function>
		<Function Name="ds_map_add_list" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can assign a (previously created) DS list to a key within the given DS map. This function is designed for creating JSON compatible maps which you would then encode using json_encode() and should only be used in conjunction with that functionality. If a DS map has a list added in this way, destroying the parent map will also destroy the contained lists and free their memory, and calling ds_map_clear() on the parent map will also destroy and clean up any flagged lists.</Description>
			<Parameter Name="id" Type="Id.DsMap" Optional="false">The id of the map to use.</Parameter>
			<Parameter Name="key" Type="Any" Optional="false">The key for the added list.</Parameter>
			<Parameter Name="value" Type="Id.DsList" Optional="false">The id of the list to add.</Parameter>
		</Function>
		<Function Name="ds_map_add_map" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can assign a (previously created) DS map to a key within the given DS map . This function is designed for creating JSON compatible maps which you would then encode using json_encode() and should only be used in conjunction with that functionality. If a DS map has another map added in this way, then destroying the parent map will also destroy the contained maps and free their memory, and calling ds_map_clear() on the parent map will also destroy and clean up any flagged maps.</Description>
			<Parameter Name="id" Type="Id.DsMap" Optional="false">The id of the map to use.</Parameter>
			<Parameter Name="key" Type="Any" Optional="false">The key for the added map.</Parameter>
			<Parameter Name="value" Type="Id.DsMap" Optional="false">The id of the map to add.</Parameter>
		</Function>
		<Function Name="ds_map_clear" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will clear the (previously created) DS map of all key/value pairs, but it will not delete the DS map itself from memory. For that you should use the function ds_map_destroy(). Note that clearing a map will de-reference any data structures stored in the map giving a memory leak, so you would need to go through it and destroy all data structure items manually before clearing the map to prevent this. The only time this is not required is when you have flagged any items in the map as a DS list or as another DS map, in which case these items will be destroyed (not cleared!) and their memory cleaned up automatically when the parent map is cleared.</Description>
			<Parameter Name="id" Type="Id.DsMap" Optional="false">The id of the data structure to clear.</Parameter>
		</Function>
		<Function Name="ds_map_copy" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>You can use this function to copy the contents of one map into another one that you have previously created using ds_map_create(). If the DS map that is being copied to is not empty, then this function will clear it first before copying. The original DS map remains unchanged by this process.</Description>
			<Parameter Name="id" Type="Id.DsMap" Optional="false">The id of the map you are copying to</Parameter>
			<Parameter Name="source" Type="Id.DsMap" Optional="false">The id of the map you are copying from</Parameter>
		</Function>
		<Function Name="ds_map_create" Deprecated="false" ReturnType="Id.DsMap" Pure="true">
			<Description>This function is used to create a new, empty, DS map and will return its id which is then used to access the data structure in all other DS map functions.</Description>
		</Function>
		<Function Name="ds_map_delete" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can remove any given key (and its corresponding value) from the given, previously created, DS map .</Description>
			<Parameter Name="id" Type="Id.DsMap" Optional="false">The id of the map to change.</Parameter>
			<Parameter Name="key" Type="Any" Optional="false">The key (along with its associated value) to delete.</Parameter>
		</Function>
		<Function Name="ds_map_destroy" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>DS maps take up space in memory, which is allocated to them when they are created. This means that you also need to free this memory when the DS map is not needed to prevent errors, memory leaks and loss of performance when running your game. This function does just that. Note that destroying a map will de-reference any data structures stored in the map giving a memory leak, so you would need to go through the map and destroy all data structure items manually before destroying it to prevent this. The only time this is not required is when you have flagged any items in the map as a DS list or as another DS map, in which case these items will be destroyed and their memory cleaned up automatically as well.</Description>
			<Parameter Name="id" Type="Id.DsMap" Optional="false">The id of the map to destroy.</Parameter>
		</Function>
		<Function Name="ds_map_empty" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will simply return false if the specified (previously created) DS map contains any key/value pairs, or true if it does not.</Description>
			<Parameter Name="id" Type="Id.DsMap" Optional="false">The id of the data structure to check.</Parameter>
		</Function>
		<Function Name="ds_map_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will return true if the specified key exists in the (previously created) DS map , and false if it does not.</Description>
			<Parameter Name="id" Type="Id.DsMap" Optional="false">the id of the data structure to check</Parameter>
			<Parameter Name="key" Type="Any" Optional="false">the key to check for</Parameter>
		</Function>
		<Function Name="ds_map_find_first" Deprecated="false" ReturnType="Any" Pure="true">
			<Description>This function returns the first key stored in the DS map. This is not the first key in the order you added them! DS maps are not stored in a linear form, for that use DS list, so all this does is find the first key as stored by the computer. This can be useful if your have to iterate through the DS map looking for something, but should be avoided if possible as it can be slow.</Description>
			<Parameter Name="id" Type="Id.DsMap" Optional="false">The id of the map to use.</Parameter>
		</Function>
		<Function Name="ds_map_find_last" Deprecated="false" ReturnType="Any" Pure="true">
			<Description>This function returns the last key stored in the DS map. This is not the last key in the order that you have added them! DS maps are not stored in a linear form, for that use DS lists, so all this does is find the last key as stored by the computer. This can be useful if your have to iterate through the DS map looking for something, but should be avoided if possible as it can be slow.</Description>
			<Parameter Name="id" Type="Id.DsMap" Optional="false">The id of the map to use.</Parameter>
		</Function>
		<Function Name="ds_map_find_next" Deprecated="false" ReturnType="Any" Pure="true">
			<Description>This function returns the next key stored in the DS map after the one specified in the function. This can be useful if your have to iterate through the DS map looking for something, but should be avoided if possible as it can be slow. If no such key exists then the function will return undefined. You should always check this using the is_undefined() function.</Description>
			<Parameter Name="id" Type="Id.DsMap" Optional="false">The id of the map to use.</Parameter>
			<Parameter Name="key" Type="Any" Optional="false">The key to find the next one to.</Parameter>
		</Function>
		<Function Name="ds_map_find_previous" Deprecated="false" ReturnType="Any" Pure="true">
			<Description>This function returns the previous key stored in the DS map before the one specified in the function. This can be useful if your have to iterate through the DS map looking for something, but should be avoided if possible as it can be slow. If no such key exists then the function will return undefined. You should always check this using the is_undefined() function.</Description>
			<Parameter Name="id" Type="Id.DsMap" Optional="false">The id of the map to use.</Parameter>
			<Parameter Name="key" Type="Any" Optional="false">The key to find the previous one to.</Parameter>
		</Function>
		<Function Name="ds_map_find_value" Deprecated="false" ReturnType="ArgumentIdentity" Pure="true">
			<Description>With this function you can get the value from a specified key. The input values of the function are the (previously created) DS map to use and the key to check for.</Description>
			<Parameter Name="id" Type="Id.DsMap" Optional="false">The id of the map to use.</Parameter>
			<Parameter Name="key" Type="Any" Optional="false">The key to find.</Parameter>
		</Function>
		<Function Name="ds_map_is_list" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check to see if a DS list is stored in the given map key. If the given key contains a DS list ID, then the function will return true otherwise it will return false.</Description>
			<Parameter Name="id" Type="Id.DsMap" Optional="false">The id of the ds_map to use.</Parameter>
			<Parameter Name="key" Type="Any" Optional="false">The key to check.</Parameter>
		</Function>
		<Function Name="ds_map_is_map" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check to see if a DS map is stored in the given map key. If the given key contains a DS map ID, then the function will return true otherwise it will return false.</Description>
			<Parameter Name="id" Type="Id.DsMap" Optional="false">The id of the ds_map to use.</Parameter>
			<Parameter Name="key" Type="Any" Optional="false">The key to replace.</Parameter>
		</Function>
		<Function Name="ds_map_keys_to_array" Deprecated="false" ReturnType="Array[Any]" Pure="true">
			<Description>With this function you can retrieve all of the keys that a DS map contains. You supply the DS map ID to get the keys from (as returned by ds_map_create()) and the function will return an array where each entry in the array is a key from the DS map. The function has an optional second argument where you can supply an array that you have created, in which case the map key data will be appended onto any existing data in the array. Note that the function will modify the array supplied directly, but will also return a reference to it (or a reference to a new array if none is supplied).</Description>
			<Parameter Name="id" Type="Id.DsMap" Optional="false">The id of the map to use.</Parameter>
			<Parameter Name="array" Type="Array" Optional="true">OPTIONAL! The array to append the DS map keys to.</Parameter>
		</Function>
		<Function Name="ds_map_read" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will take a string that has previously been created by the function ds_map_write() and then read it into a previously created DS map. If the map that the string is being read into contains any key/value pairs, these will be cleared first before the saved map is re-constructed.</Description>
			<Parameter Name="id" Type="Id.DsMap" Optional="false">The id of the data structure to read the string into</Parameter>
			<Parameter Name="str" Type="String" Optional="false">The string to read</Parameter>
			<Parameter Name="legacy (optional)" Type="Bool" Optional="true">Can be either true or false or omitted completely.</Parameter>
		</Function>
		<Function Name="ds_map_replace" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>With this function you can change the value for the given key within the a DS map . You supply the index to the map (as returned by the function ds_map_create()) and then the key to replace - either a string or an integer - and the value to replace the key value with. If the given key does not exist then it will be created for you, and if it does then the current value will be replaced with the new value. The function will return true if the key exists and the value is replaced, and false if the key does not exist and a new key was created with the value.</Description>
			<Parameter Name="id" Type="Id.DsMap" Coerce="true" Optional="false">The id of the map to change.</Parameter>
			<Parameter Name="key" Type="Any" Optional="false">The key with the value that should be replaced by the new one</Parameter>
			<Parameter Name="val" Type="ArgumentIdentity" Optional="false">The new value to replace the given value with</Parameter>
		</Function>
		<Function Name="ds_map_replace_list" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can replace a DS list that has been stored in the given &quot;key&quot; with another list that has been created previously. This function is designed for creating JSON compatible maps which you would then encode using json_encode() and should only be used in conjunction with that functionality.</Description>
			<Parameter Name="id" Type="Id.DsMap" Optional="false">The id of the map to use.</Parameter>
			<Parameter Name="key" Type="Any" Optional="false">The key to replace.</Parameter>
			<Parameter Name="value" Type="Id.DsList" Optional="false">The id of the ds_list to use to replace the one previously stored in the given key.</Parameter>
		</Function>
		<Function Name="ds_map_replace_map" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can replace a DS Map that has been stored in the given &quot;key&quot; with another map that has been created previously. This function is designed for creating JSON compatible maps which you would then encode using json_encode() and should only be used in conjunction with that functionality.</Description>
			<Parameter Name="id" Type="Id.DsMap" Optional="false">The id of the ds_map to use.</Parameter>
			<Parameter Name="key" Type="Any" Optional="false">The key to replace.</Parameter>
			<Parameter Name="value" Type="Id.DsMap" Optional="false">The id of the ds_map to use to replace the one previously stored in the given key.</Parameter>
		</Function>
		<Function Name="ds_map_secure_load" Deprecated="false" ReturnType="Id.DsMap" Pure="false">
			<Description>This function will load a previously saved DS map from the given file. This file must have been previously created using the ds_map_secure_save() function, and, when loaded, the function will return the index of the DS map that has been created from the loaded data. This DS map index should be stored in a variable and used for all further function calls to this map. Note that if the DS map being loaded was saved with an array as one of the key values, this array will have been converted into a DS list on load.</Description>
			<Parameter Name="filename" Type="String" Optional="false">The name of the file to load the map data from.</Parameter>
		</Function>
		<Function Name="ds_map_secure_load_buffer" Deprecated="false" ReturnType="Id.DsMap" Pure="false">
			<Description>This function will load a secure saved DS map from a buffer. You must previously have loaded the buffer into memory (using buffer_load()) and then passing that into this function will return a DS map populated with the contents of the buffer. Note that the buffer must have been created using the function ds_map_secure_save_buffer() for this to work correctly, and also note that if the DS map being loaded contained an array, this will be converted into a DS list instead on load.</Description>
			<Parameter Name="filename" Type="String" Optional="false">The buffer ID of the buffer to load the map data from.</Parameter>
		</Function>
		<Function Name="ds_map_secure_save" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>This function will save the contents of the given DS map to a file that is linked to the device it was created on (meaning it can&apos;t be read if transferred to any other device). The file itself can have almost any extension (for example, *.dat, *.json, *.bin, etc...) and will be obfuscated and stored to local storage on the target platform. You can then re-load the ds_map using the function ds_map_secure_load(). Note that if the DS map being saved contains an array, this array will be converted into a DS list instead when saved.</Description>
			<Parameter Name="map" Type="Id.DsMap" Optional="false">The id of the data structure to use</Parameter>
			<Parameter Name="filename" Type="String" Optional="false">The name of the file to save the map to</Parameter>
		</Function>
		<Function Name="ds_map_secure_save_buffer" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>This function will save a previously created DS map to a buffer. You supply the DS map ID value (as returned by the function ds_map_create()) and the ID of the buffer to write to (as returned by the function buffer_create()). Note that if the DS map being saved contains an array, this will be converted into a DS list instead when saved.</Description>
			<Parameter Name="id" Type="Id.DsMap" Optional="false">The DS map ID value.</Parameter>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The buffer ID value.</Parameter>
		</Function>
		<Function Name="ds_map_set" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the value of a key within a given DS map. You supply the DS map ID value (as returned by the function ds_map_create()), then give the key you want to set and the value to set it to. Keys can be integers or strings, and if the given key does not exist then it will be created for you and set to the value. This function is the same as using the DS map accessor to set/create a map key/value pair. The function does not return anything, so if you need to check if the key value has been replaced or a new key has been created, then you should use the function ds_map_replace().</Description>
			<Parameter Name="id" Type="Id.DsMap" Coerce="true" Optional="false">The id of the map to use.</Parameter>
			<Parameter Name="key" Type="Any" Optional="false">The key to set.</Parameter>
			<Parameter Name="value" Type="ArgumentIdentity" Optional="false">The value to set the key to.</Parameter>
		</Function>
		<Function Name="ds_map_size" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can find how many key/values pairs the (previously created) DS map contains.</Description>
			<Parameter Name="id" Type="Id.DsMap" Optional="false">The id of the data structure to check.</Parameter>
		</Function>
		<Function Name="ds_map_values_to_array" Deprecated="false" ReturnType="Array[Any]" Pure="true">
			<Description>With this function you can retrieve all of the values that a DS map contains for each key in the map. You supply the DS map ID to get the keys from (as returned by ds_map_create()) and the function will return an array where each entry in the array is a value from the DS map (for example, if the map has 10 keys, then an array of 10 entries will be returned with each entry corresponding to a value for a key). The function has an optional second argument where you can supply an array that you have created, in which case the map key value data will be appended onto any existing data in the array. Note that the function will modify the array supplied directly, but will also return a reference to it (or a reference to a new array if none is supplied).</Description>
			<Parameter Name="id" Type="Id.DsMap" Optional="false">The id of the map to use.</Parameter>
			<Parameter Name="array" Type="Array" Optional="true">OPTIONAL! The array to append the DS map values to.</Parameter>
		</Function>
		<Function Name="ds_map_write" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function will turn the DS map data of the specified map into string format which can then be written to an *.ini or a *.txt file for easy storage. This string can then be later read back into a new ds_map using ds_map_read().</Description>
			<Parameter Name="id" Type="Id.DsMap" Optional="false">The id of the data structure to use</Parameter>
		</Function>
		<Function Name="ds_priority_add" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can add a value (either a real number or a string) to a priority queue, at the same time assigning it a priority value.</Description>
			<Parameter Name="id" Type="Id.DsPriority" Coerce="true" Optional="false">The id of the priority queue to add to.</Parameter>
			<Parameter Name="val" Type="ArgumentIdentity" Optional="false">The value to add to the priority queue.</Parameter>
			<Parameter Name="priority" Type="Real" Optional="false">The priority of the value to add.</Parameter>
		</Function>
		<Function Name="ds_priority_change_priority" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will take a given value and change its priority within the referenced priority queue.</Description>
			<Parameter Name="id" Type="Id.DsPriority" Optional="false">The id of the priority queue to change.</Parameter>
			<Parameter Name="val" Type="Any" Optional="false">The value to change the priority of.</Parameter>
			<Parameter Name="priority" Type="Real" Optional="false">The new priority of the value.</Parameter>
		</Function>
		<Function Name="ds_priority_clear" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can clear all data from the given priority queue data-structure. This does NOT destroy the data-structure (for that you should use ds_priority_destroy()) it only wipes all data from it and returns an empty priority queue.</Description>
			<Parameter Name="id" Type="Id.DsPriority" Optional="false">The id of the data structure to clear.</Parameter>
		</Function>
		<Function Name="ds_priority_copy" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to copy the contents of one priority queue into another. Note that this does NOT remove the contents from the original priority queue, nor does it destroy the original priority queue. When using this function the priority queue being copied to must have been previously created and if it contained any items before the copy, then these will be cleared first (meaning this information will be lost).</Description>
			<Parameter Name="id" Type="Id.DsPriority" Optional="false">The id of the priority queue to copy to.</Parameter>
			<Parameter Name="source" Type="Id.DsPriority" Optional="false">The id of the priority queue to copy from.</Parameter>
		</Function>
		<Function Name="ds_priority_create" Deprecated="false" ReturnType="Id.DsPriority" Pure="true">
			<Description>This function will create a new priority queue data-structure and return the index value. This value should be stored in a variable and used in all further function calls relating to the priority queue.</Description>
		</Function>
		<Function Name="ds_priority_delete_max" Deprecated="false" ReturnType="ArgumentIdentity" Pure="false">
			<Description>This function will return the value that has the highest priority in the queue and then remove the value (and priority) from the data structure. If more than one value has the same priority, then any one of them could be returned in any order, but all other values with the same priority will still be in the queue.</Description>
			<Parameter Name="id" Type="Id.DsPriority" Optional="false">The id of the priority queue to use.</Parameter>
		</Function>
		<Function Name="ds_priority_delete_min" Deprecated="false" ReturnType="ArgumentIdentity" Pure="false">
			<Description>This function will return the value that has the lowest priority in the queue and then remove the value (and priority) from the data structure. If more than one value has the same priority, then any one of them could be returned in any order, but all other values with the same priority will still be in the queue.</Description>
			<Parameter Name="id" Type="Id.DsPriority" Optional="false">The id of the priority queue to use.</Parameter>
		</Function>
		<Function Name="ds_priority_delete_value" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will simply delete the given value, along with its priority, from the indexed priority queue.</Description>
			<Parameter Name="id" Type="Id.DsPriority" Optional="false">The id of the priority queue to use.</Parameter>
			<Parameter Name="val" Type="Any" Optional="false">The value to delete from the priority queue.</Parameter>
		</Function>
		<Function Name="ds_priority_destroy" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will remove the given priority queue data-structure from memory, freeing up the resources it was using and removing all values that it contained. This function should always be used when you are finished using the DS priority queue to prevent memory leaks that can slow down and crash your game.</Description>
			<Parameter Name="id" Type="Id.DsPriority" Optional="false">The id of the data structure to remove.</Parameter>
		</Function>
		<Function Name="ds_priority_empty" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check the given DS priority queue to see if it is empty (returns true) or not (returns false).</Description>
			<Parameter Name="id" Type="Id.DsPriority" Optional="false">The id of the data structure to check.</Parameter>
		</Function>
		<Function Name="ds_priority_find_max" Deprecated="false" ReturnType="ArgumentIdentity" Pure="true">
			<Description>With this function you can find the value stored in the priority queue with the highest priority, and if more than one value has the same priority then any one of them could be returned in any order. However, unlike ds_priority_delete_max(), this function will not remove the value from the queue.</Description>
			<Parameter Name="id" Type="Id.DsPriority" Optional="false">The id of the priority queue to use.</Parameter>
		</Function>
		<Function Name="ds_priority_find_min" Deprecated="false" ReturnType="ArgumentIdentity" Pure="true">
			<Description>With this function you can find the value stored in the priority queue with the lowest priority, and if more than one value has the same priority then any one of them could be returned in any order. However, unlike ds_priority_delete_min(), this function will not remove the value from the queue.</Description>
			<Parameter Name="id" Type="Id.DsPriority" Optional="false">The id of the priority queue to use.</Parameter>
		</Function>
		<Function Name="ds_priority_find_priority" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can retrieve the priority of any given value. If the value does not exist in the priority queue then undefined will be returned.</Description>
			<Parameter Name="id" Type="Id.DsPriority" Optional="false">The id of the priority queue to use.</Parameter>
			<Parameter Name="val" Type="Any" Optional="false">The value to find the priority of.</Parameter>
		</Function>
		<Function Name="ds_priority_read" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can recreate a saved DS priority (one that has previously been written as a string using ds_priority_write()). You must first create a new DS priority to read the string into, and if the DS priority already exists and has information stored in it, then this will be cleared before reading. This function is of vital importance when creating save/load mechanisms for your game.</Description>
			<Parameter Name="id" Type="Id.DsPriority" Optional="false">The id of the data structure to write.</Parameter>
			<Parameter Name="str" Type="String" Optional="false">The string to write from.</Parameter>
			<Parameter Name="legacy (optional)" Type="Bool" Optional="true">Can be either true or false or omitted completely.</Parameter>
		</Function>
		<Function Name="ds_priority_size" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the &quot;size&quot; of the priority queue, ie: the number of items that have been prioritized in it.</Description>
			<Parameter Name="id" Type="Id.DsPriority" Optional="false">The id of the data structure to check.</Parameter>
		</Function>
		<Function Name="ds_priority_write" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function returns a string which can then be stored or transferred to another data structure using the ds_priority_read() function.</Description>
			<Parameter Name="id" Type="Id.DsPriority" Optional="false">The id of the data structure to check.</Parameter>
		</Function>
		<Function Name="ds_queue_clear" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can clear all data from the given queue data-structure. This does NOT destroy the data-structure (for that you should use ds_queue_destroy()) it only wipes all data from it and returns an empty queue.</Description>
			<Parameter Name="id" Type="Id.DsQueue" Optional="false">The id of the data structure to clear.</Parameter>
		</Function>
		<Function Name="ds_queue_copy" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to copy the contents of one queue into another. Note that this does NOT remove the contents from the original queue, nor does it destroy the original queue. When using this function the queue being copied to must have been previously created and if it contained any items before the copy, then these will be cleared first (meaning this information will be lost).</Description>
			<Parameter Name="id" Type="Id.DsQueue" Optional="false">The id of the NEW queue.</Parameter>
			<Parameter Name="source" Type="Id.DsQueue" Optional="false">The ORIGINAL queue to copy to id.</Parameter>
		</Function>
		<Function Name="ds_queue_create" Deprecated="false" ReturnType="Id.DsQueue" Pure="true">
			<Description>This function will create a new queue data-structure and return the index value. This value should be stored in a variable and used in all further function calls relating to the queue.</Description>
		</Function>
		<Function Name="ds_queue_dequeue" Deprecated="false" ReturnType="ArgumentIdentity" Pure="false">
			<Description>This function will dequeue the head value off of the DS queue, removing it from the queue and returning the value to be stored in a variable. If the queue is empty then the function will return the constant undefined, otherwise it will return the real or string value contained in the queue.</Description>
			<Parameter Name="id" Type="Id.DsQueue" Optional="false">The id of the queue to dequeue from.</Parameter>
		</Function>
		<Function Name="ds_queue_destroy" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will remove the given queue data-structure from memory, freeing up the resources it was using and removing all values that it contained. This function should always be used when you are finished using the DS queue to prevent memory leaks that can slow down and crash your game.</Description>
			<Parameter Name="id" Type="Id.DsQueue" Optional="false">The id of the data structure to remove.</Parameter>
		</Function>
		<Function Name="ds_queue_empty" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check the given DS queue to see if it is empty (returns true) or not (returns false).</Description>
			<Parameter Name="id" Type="Id.DsQueue" Optional="false">The id of the data structure to check.</Parameter>
		</Function>
		<Function Name="ds_queue_enqueue" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will add a value (real or string) onto the tail of the DS queue. The function can take a further 14 optional arguments (making a total of 15 possible additions), permitting you to add multiple values consecutively to the tail of the queue in a single call.</Description>
			<Parameter Name="id" Type="Id.DsQueue" Coerce="true" Optional="false">The id of the queue to add to.</Parameter>
			<Parameter Name="..." Type="ArgumentIdentity" Optional="true">The value to add to the queue.</Parameter>
		</Function>
		<Function Name="ds_queue_head" Deprecated="false" ReturnType="ArgumentIdentity" Pure="true">
			<Description>This function will only read the first value of the queue (that which is &quot;at the head&quot;). It will not dequeue the value, meaning that it can still be read in the future by this function or the ds_queue_dequeue(). If the queue is empty then the function will return the constant undefined, otherwise it will return the real or string value contained in the queue.</Description>
			<Parameter Name="id" Type="Id.DsQueue" Optional="false">The id of the data structure to read from.</Parameter>
		</Function>
		<Function Name="ds_queue_read" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can recreate a saved DS queue (one that has previously been written as a string using ds_queue_write()). You must first create a new DS queue to read the string into, and if the DS queue already exists and has information stored in it, then this will be cleared before reading. This function is of vital importance when creating save/load mechanisms for your game.</Description>
			<Parameter Name="id" Type="Id.DsQueue" Optional="false">The id of the data structure to read into.</Parameter>
			<Parameter Name="str" Type="String" Optional="false">The string to read from.</Parameter>
			<Parameter Name="legacy (optional)" Type="Bool" Optional="true">Can be either true or false or omitted completely.</Parameter>
		</Function>
		<Function Name="ds_queue_size" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the &quot;size&quot; of the queue, ie: the number of items that have been queued onto it.</Description>
			<Parameter Name="id" Type="Id.DsQueue" Optional="false">The id of the data structure to check.</Parameter>
		</Function>
		<Function Name="ds_queue_tail" Deprecated="false" ReturnType="ArgumentIdentity" Pure="true">
			<Description>This function will only read the last value of the queue (that which is &quot;at the tail&quot;). It will not dequeue the value, meaning that it can still be read in the future by this function or the ds_queue_dequeue().</Description>
			<Parameter Name="id" Type="Id.DsQueue" Optional="false">The id of the data structure to read from.</Parameter>
		</Function>
		<Function Name="ds_queue_write" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function returns a string which can then be stored or transferred to another data structure using the ds_queue_read() function.</Description>
			<Parameter Name="id" Type="Id.DsQueue" Optional="false">The id of the data structure to write.</Parameter>
		</Function>
		<Function Name="ds_stack_clear" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can clear all data from the given stack data-structure. This does NOT destroy the data-structure (for that you should use ds_stack_destroy()) it only wipes all data from it and returns an empty stack.</Description>
			<Parameter Name="id" Type="Id.DsStack" Optional="false">The id of the data structure to clear.</Parameter>
		</Function>
		<Function Name="ds_stack_copy" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to copy the contents of one stack into another. Note that this does NOT remove the contents from the original stack, nor does it destroy the original stack. When using this function the stack being copied to must have been previously created and if it contained any items before the copy, then these will be cleared first (meaning this information will be lost).</Description>
			<Parameter Name="id" Type="Id.DsStack" Optional="false">The id of the NEW stack.</Parameter>
			<Parameter Name="source" Type="Id.DsStack" Optional="false">The ORIGINAL stack to copy to id.</Parameter>
		</Function>
		<Function Name="ds_stack_create" Deprecated="false" ReturnType="Id.DsStack" Pure="true">
			<Description>This function will create a new stack data-structure and return the index value. This value should be stored in a variable and used in all further function calls relating to the stack.</Description>
		</Function>
		<Function Name="ds_stack_destroy" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will remove the given stack data-structure from memory, freeing up the resources it was using and removing all values that it contained. This function should always be used when you are finished using the DS stack to prevent memory leaks that can slow down and crash your game.</Description>
			<Parameter Name="id" Type="Id.DsStack" Optional="false">The id of the data structure to remove.</Parameter>
		</Function>
		<Function Name="ds_stack_empty" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check the given DS stack to see if it is empty (returns true) or not (returns false).</Description>
			<Parameter Name="id" Type="Id.DsStack" Optional="false">The id of the data structure to check.</Parameter>
		</Function>
		<Function Name="ds_stack_pop" Deprecated="false" ReturnType="ArgumentIdentity" Pure="false">
			<Description>This function will pop the top value off of the DS stack , removing it from the stack and returning the value to be stored in a variable. If the stack is empty then the function will return the constant undefined, otherwise it will return the real or string value contained in the stack.</Description>
			<Parameter Name="id" Type="Id.DsStack" Optional="false">The id of the data structure to pop from.</Parameter>
		</Function>
		<Function Name="ds_stack_push" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will push (add) a value, which can be of any data type, onto the top of the stack. The function can take a further 14 optional arguments (making a total of 15 possible additions), permitting you to push multiple values consecutively to the stack in a single call.</Description>
			<Parameter Name="id" Type="Id.DsStack" Coerce="true" Optional="false">The id of the data structure to push onto.</Parameter>
			<Parameter Name="..." Type="ArgumentIdentity" Optional="true">The value to push onto the stack.</Parameter>
		</Function>
		<Function Name="ds_stack_read" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can recreate a saved DS stack (one that has previously been written as a string using ds_stack_write()). You must first create a new DS stack to read the string into, and if the DS stack already exists and has information stored in it, then this will be cleared before reading. This function is of vital importance when creating save/load mechanisms for your game.</Description>
			<Parameter Name="id" Type="Id.DsStack" Optional="false">The id of the data structure to read into.</Parameter>
			<Parameter Name="str" Type="String" Optional="false">The string to read from.</Parameter>
			<Parameter Name="legacy (optional)" Type="Bool" Optional="true">Can be either true or false or omitted completely.</Parameter>
		</Function>
		<Function Name="ds_stack_size" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the &quot;size&quot; of the stack, ie: the number of items that have been pushed onto it.</Description>
			<Parameter Name="id" Type="Id.DsStack" Optional="false">The id of the data structure to check.</Parameter>
		</Function>
		<Function Name="ds_stack_top" Deprecated="false" ReturnType="ArgumentIdentity" Pure="true">
			<Description>This function will only read the first value of the stack (that which is &quot;on top&quot;). It will not pop the value, meaning that it can still be read in the future by this function or the ds_stack_pop(). If the stack is empty then the function will return the constant undefined, otherwise it will return the real or string value contained in the stack.</Description>
			<Parameter Name="id" Type="Id.DsStack" Coerce="true" Optional="false">The id of the data structure to read from.</Parameter>
		</Function>
		<Function Name="ds_stack_write" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function returns a string which can then be stored or transferred to another data structure using the ds_stack_read() function.</Description>
			<Parameter Name="id" Type="Id.DsStack" Optional="false">The id of the data structure to write.</Parameter>
		</Function>
		<Function Name="code_is_compiled" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will return true if the platform compiles outside of the virtual machine, such as for the YYC and JS platforms.</Description>
		</Function>
		<Function Name="debug_event" Deprecated="false" ReturnType="Struct" Pure="false">
			<Description>This function generates a custom debug event that will be shown in the Graph View of the debugger when a game is being run in Debug Mode. If you require messages to be displayed when not in debug mode, then you should be using show_debug_message(). It is worth noting that the function will also take two reserved strings to help perform debugging using external applications like Visual Studio. These strings are:</Description>
			<Parameter Name="string" Type="String" Optional="false">The custom debug event string to use.</Parameter>
			<Parameter Name="param" Type="Any" Optional="true">Extra configuration parameter.</Parameter>
		</Function>
		<Function Name="debug_get_callstack" Deprecated="false" ReturnType="Array[String]" Pure="true">
			<Description>This function generates an array of strings as the &quot;callstack&quot; where the current script is listed first, and then all the other scripts that were run in order for the current script to be executed. The exact string format will vary depending on the target platform chosen, but it will mostly have the script/event name, then a colon : and the line number, similar to this:</Description>
			<Parameter Name="maxdepth" Type="Real" Optional="true">The maximum depth of the callstack</Parameter>
		</Function>
		<Function Name="exception_unhandled_handler" Deprecated="false" ReturnType="Function" Pure="false">
			<Description>This runtime function can be used to &quot;take over&quot; the default GameMaker error message when a runtime exception occurs. You supply a method or function which is called when the exception occurs, and its first argument will be a struct containing information about the exception. This struct has the following format:</Description>
			<Parameter Name="user_handler" Type="Function" Optional="false">The method (user-defined function) to use as the exception handler, or undefined to reset it to default.</Parameter>
		</Function>
		<Function Name="get_integer" Deprecated="true" ReturnType="Real" Pure="true">
			<Description>This function has being deprecated and is now obsolete (use get_integer_async instead). Calls to this function will produce a warning message.</Description>
			<Parameter Name="str" Type="String" Optional="false">The string to show in the pop-up message.</Parameter>
			<Parameter Name="def" Type="Real" Optional="false">The default value in the text box.</Parameter>
		</Function>
		<Function Name="get_string" Deprecated="true" ReturnType="String" Pure="true">
			<Description>This function has being deprecated and is now obsolete (use get_string_async instead). Calls to this function will produce a warning message.</Description>
			<Parameter Name="str" Type="String" Optional="false">The string to show in the pop-up message.</Parameter>
			<Parameter Name="def" Type="String" Optional="false">The default string in the text box.</Parameter>
		</Function>
		<Function Name="show_debug_message" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will create a custom debug message that is shown in the compiler window at runtime. Note that the message can be either a string or a real number, but if you need both then the number will have to be converted to string first using the string() function (see the example below) and that if the number has more than two decimal places then you should use string_format() to show them as by default decimals are rounded to the nearest two decimal places (so &quot;1.2468&quot; would show as &quot;1.25&quot; in the output window). This function also supports template format strings when using &quot;{x}&quot; (i.e. {0},{1},...) as placeholders and passing the correspondent values as separate arguments.</Description>
			<Parameter Name="string_or_format" Type="Any" Optional="false">The custom debug message to show or a string format.</Parameter>
			<Parameter Name="..." Type="ArgumentIdentity" Optional="true">Values to be replaced on the format string (non-strings will be converted to strings).</Parameter>
		</Function>
		<Function Name="show_debug_message_ext" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will create a custom debug message that is shown in the compiler window at runtime. This function requires a format string using &quot;{x}&quot; (i.e. {0},{1},...) as placeholders and passing the correspondent values as and array of values.</Description>
			<Parameter Name="str_format" Type="String" Optional="false">The custom debug message to show.</Parameter>
			<Parameter Name="..." Type="Array" Optional="false">An array of values to be replaced on the format string (non-string elements will be converted to string).</Parameter>
		</Function>
		<Function Name="show_debug_overlay" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to switch on and off the standard debug overlay when testing your game and is disabled by default. The debug overlay shows a graphic CPU/GPU usage bar in the actual game window itself along with the current real fps value, number of texture swaps and the number of vertex batches (note that texture swaps and vertex batches will never be zero and will normally show values of 2 or 3, since even with an empty room an no objects GameMaker still has to draw and batch things).</Description>
			<Parameter Name="enable" Type="Bool" Optional="false">switch on (true) or off (false) the debug overlay.         </Parameter>
		</Function>
		<Function Name="show_error" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will show a custom string as an error message. You can also specify whether the game should be aborted after the error, however please note that this only exists for compatibility reasons and showing errors will require the game to be aborted regardless of the value specified in this argument.</Description>
			<Parameter Name="str" Type="String" Optional="false">The string to show in the pop-up message.</Parameter>
			<Parameter Name="abort" Type="Bool" Optional="false">Whether to abort (true) or not (false).</Parameter>
		</Function>
		<Function Name="show_message" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function creates a pop-up message box which displays the given string and a button marked &quot;Ok&quot; to close it.</Description>
			<Parameter Name="str" Type="Any" Optional="false">The string to show in the pop-up message.</Parameter>
		</Function>
		<Function Name="show_question" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function creates a pop-up message box with two buttons for &quot;Yes&quot; and &quot;No&quot;. It returns true or false depending on which one of the two buttons the user presses.</Description>
			<Parameter Name="str" Type="String" Optional="false">The string to show in the pop-up question.</Parameter>
		</Function>
		<Function Name="draw_enable_drawevent" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can choose to enable (true) or disable (false) the draw event for all instances in the game, thus giving you control over how and when things are draw, useful if you wish to implement a &quot;frame skip&quot; technique. Note that this doesn&apos;t just prevent instances drawing to the screen, it suppresses the draw event completely meaning that care should be taken since any game logic that is present in that event will not be run either. One important thing to understand about this function is that if you call it right at the start of the game, before the initial frame is rendered (ie: the Create Event of the first object in the first room of the game), then the game window will not be rendered. This could be useful for online projects that require a server which doesn&apos;t need to render anything.</Description>
			<Parameter Name="enable" Type="Bool" Optional="false">Set to true or false.</Parameter>
		</Function>
		<Function Name="draw_flush" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can flush the entire draw pipeline. This is a debug only function and in general it should not be used unless indicated by a member of the YoYo Games Support staff, as indiscriminate use will cause serious performance issues with your game.</Description>
		</Function>
		<Function Name="draw_arrow" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will draw an arrow from point (x1,y1) to point (x2,y2). The stem of the arrow is drawn along these points with the actual arrow head being drawn at the end, where the size of the arrowhead is defined by the argument &quot;size&quot; and is calculated as being part of the stem so that the end point is always aligned with the position defined by x2,y2. The width of the arrow head is calculated automatically in proportion to the length.</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the start of the line.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the start of the line.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the end of the line (where the arrowhead ends).</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the end of the line (where the arrowhead ends).</Parameter>
			<Parameter Name="size" Type="Real" Optional="false">The length of the arrow in pixels.</Parameter>
		</Function>
		<Function Name="draw_button" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will draw a very simple, rectangular &quot;button&quot; using the currently selected draw colour and alpha where the up argument defines how the beveled edge effect looks, as shown in the image below:</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the left of the button</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the top of the button</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the right of the button</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the bottom of the button</Parameter>
			<Parameter Name="up" Type="Bool" Optional="false">Whether the button is up (true) or down (false)</Parameter>
		</Function>
		<Function Name="draw_circle" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can draw either an outline of a circle or a filled circle. You can define how precise the drawing is with the function draw_set_circle_precision().</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of the center of the circle.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of the center of the circle.</Parameter>
			<Parameter Name="r" Type="Real" Optional="false">The circle&apos;s radius (length from its center to its edge)</Parameter>
			<Parameter Name="outline" Type="Bool" Optional="false">Whether the circle is drawn filled (false) or as a one pixel wide outline (true).</Parameter>
		</Function>
		<Function Name="draw_circle_colour" Deprecated="false" ReturnType="Undefined" Locale="GB" Pure="true">
			<Description>With this function you can draw either an outline of a circle or a filled circle, and if it is filled you can define the interior and exterior fill colours. If these colours are not the same, you will get a gradient effect from one to the other and the colour settings will over-ride the base colour set with the function draw_set_colour(). You can define how precise the drawing is with the function draw_set_circle_precision().</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of the center of the circle.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of the center of the circle.</Parameter>
			<Parameter Name="r" Type="Real" Optional="false">The radius (distance from center to edge) of the circle in pixels.</Parameter>
			<Parameter Name="col1" Type="Constant.Color" Optional="false">The colour at the center of the circle.</Parameter>
			<Parameter Name="col2" Type="Constant.Color" Optional="false">The colour at the edge of the circle.</Parameter>
			<Parameter Name="outline" Type="Bool" Optional="false">Whether the circle is an outline (true) or not (false). If true, col1 is irrelevant.</Parameter>
		</Function>
		<Function Name="draw_ellipse" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can draw either an outline of an ellipse or a filled ellipse by defining a rectangular area that will then have the ellipse created to fit. You can define how precise the drawing is with the function draw_set_circle_precision().</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the left of the ellipse.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the top of the ellipse.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the right of the ellipse.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the bottom of the ellipse.</Parameter>
			<Parameter Name="outline" Type="Bool" Optional="false">Whether the ellipse is drawn filled (false) or as a one pixel wide outline (true).</Parameter>
		</Function>
		<Function Name="draw_ellipse_colour" Deprecated="false" ReturnType="Undefined" Locale="GB" Pure="true">
			<Description>With this function you can draw either an outline of an ellipse or a filled ellipse by defining a rectangular area that will then have the ellipse created to fit. If it is filled you can define the interior and exterior fill colours. If these colours are not the same, you will get a gradient effect from one to the other (the colour settings will over-ride the base colour set with the function draw_set_colour()). You can define how precise the drawing is with the function draw_set_circle_precision().</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the left of the ellipse.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the top of the ellipse.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the right of the ellipse.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the bottom of the ellipse.</Parameter>
			<Parameter Name="col1" Type="Constant.Color" Optional="false">The colour of the center.</Parameter>
			<Parameter Name="col2" Type="Constant.Color" Optional="false">The colour of the edge.</Parameter>
			<Parameter Name="outline" Type="Bool" Optional="false">Whether the ellipse is an outline (true) or filled in (false).</Parameter>
		</Function>
		<Function Name="draw_healthbar" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can draw a coloured bar to show a constant value. Although the function uses the word &quot;healthbar&quot; you can use this to display anything you wish as long as the amount to be displayed is a percentage value between 0 and 100 (a percentage of any value can be calculated with the formula (CURRENT_Value / MAXIMUM_value) * 100), so, for example, you can use this to display power, health, mana, time or anything else that would benefit from a bar display.</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the left of the healthbar</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the top of the healthbar</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the right of the healthbar</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the bottom of the healthbar</Parameter>
			<Parameter Name="amount" Type="Real" Optional="false">The variable which defines total health (between 0 and 100)</Parameter>
			<Parameter Name="backcol" Type="Constant.Color" Optional="false">The colour of the background for the bar</Parameter>
			<Parameter Name="mincol" Type="Constant.Color" Optional="false">The colour of the bar when at no health (0)</Parameter>
			<Parameter Name="maxcol" Type="Constant.Color" Optional="false">The colour of the bar when at full health (100)</Parameter>
			<Parameter Name="direction" Type="Real" Optional="false">Where the bar is &quot;anchored&quot; (0 = left, 1 = right, 2 = top, 3 = bottom)</Parameter>
			<Parameter Name="showback" Type="Bool" Optional="false">Whether the bar&apos;s background is drawn (true) or not (false). If false, the backcol argument is disregarded.</Parameter>
			<Parameter Name="showborder" Type="Bool" Optional="false">Whether the bar&apos;s elements have a 1px wide black border (true) or not (false).</Parameter>
		</Function>
		<Function Name="draw_line" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can draw a 1 pixel wide line between any two points in the game room. Please note that the line being drawn may need different values (+/-1 on the x, y) to be drawn with the desired dimensions due to differences across the various supported platforms.</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the start of the line.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the start of the line.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the end of the line.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the end of the line.</Parameter>
		</Function>
		<Function Name="draw_line_colour" Deprecated="false" ReturnType="Undefined" Locale="GB" Pure="true">
			<Description>With this function you can draw a 1 pixel wide line with the colour blended between colour 1 at the first point and colour 2 at the second point. The colour settings will over-ride the base colour set with the function draw_set_colour(). Please note that the line being drawn may need different values (+/-1 on the x, y) to be drawn with the desired dimensions due to differences across the various supported platforms.</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the start of the line.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the start of the line.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the end of the line.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the end of the line.</Parameter>
			<Parameter Name="col1" Type="Constant.Color" Optional="false">The colour of the start of the line.</Parameter>
			<Parameter Name="col2" Type="Constant.Color" Optional="false">The colour of the end of the line.</Parameter>
		</Function>
		<Function Name="draw_line_width" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can draw a line of a specified width between any two points in the game room. Please note that the line being drawn may need different values (+/-1 on the x, y) to be drawn with the desired dimensions due to differences across the various supported platforms.</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the start of the line.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the start of the line.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the end of the line.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the end of the line.</Parameter>
			<Parameter Name="w" Type="Real" Optional="false">The width of the line in pixels.</Parameter>
		</Function>
		<Function Name="draw_line_width_colour" Deprecated="false" ReturnType="Undefined" Locale="GB" Pure="true">
			<Description>With this function you can draw a line of a specific width with the colour blended between colour 1 at the first point and colour 2 at the second point. The colour settings will over-ride the base colour set with the function draw_set_colour(). Please note that the line being drawn may need different values (+/-1 on the x, y) to be drawn with the desired dimensions due to differences across the various supported platforms.</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the start of the line.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the start of the line.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the end of the line.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the end of the line.</Parameter>
			<Parameter Name="w" Type="Real" Optional="false">The width in pixels of the line.</Parameter>
			<Parameter Name="col1" Type="Constant.Color" Optional="false">The colour of the start of the line.</Parameter>
			<Parameter Name="col2" Type="Constant.Color" Optional="false">The colour of the end of the line.</Parameter>
		</Function>
		<Function Name="draw_path" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can get GameMaker to draw a path to the screen. The path will be drawn as a simple line, and can be either relative to the calling instance or at the absolute position it was created at in the path editor or through code. This function is extremely useful when debugging dynamic paths (for example, those created for instances with the mp_grid_path() function).</Description>
			<Parameter Name="path" Type="Any" Optional="false">The path to draw</Parameter>
			<Parameter Name="x" Type="Any" Optional="false">The x coordinate of where the path is drawn</Parameter>
			<Parameter Name="y" Type="Any" Optional="false">The y coordinate of where the path is drawn</Parameter>
			<Parameter Name="absolute" Type="Bool" Optional="false">Whether the path is drawn at the absolute position (true) or the relative position (false)</Parameter>
		</Function>
		<Function Name="draw_point" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can draw a single pixel anywhere on the screen, using the currently set draw colour and alpha.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of the point to be drawn.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of the point to be drawn.</Parameter>
		</Function>
		<Function Name="draw_point_colour" Deprecated="false" ReturnType="Undefined" Locale="GB" Pure="true">
			<Description>With this function you can draw a single pixel anywhere on the screen with a colour that you define. The colour settings will over-ride the base colour set with the function draw_set_colour().</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of the point.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of the point.</Parameter>
			<Parameter Name="col1" Type="Constant.Color" Optional="false">The colour of the point.</Parameter>
		</Function>
		<Function Name="draw_rectangle" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can draw either an outline of a rectangle or a filled rectangle where the (x1,y1) position is the top left corner and the (x2,y2) position is the bottom right corner. Please note that the rectangle being drawn may need different values (+/-1 on the x, y, or width or height) to be drawn with the desired dimensions due to differences across the various supported platforms.</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the top left corner of the rectangle.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the top left corner of the rectangle.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the bottom right corner of the rectangle.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the bottom right corner of the rectangle.</Parameter>
			<Parameter Name="outline" Type="Bool" Optional="false">Whether the rectangle is drawn filled (false) or as a one pixel wide outline (true).</Parameter>
		</Function>
		<Function Name="draw_rectangle_colour" Deprecated="false" ReturnType="Undefined" Locale="GB" Pure="true">
			<Description>With this function you can draw either an outline of a rectangle or a filled rectangle by defining an area where the (x1,y1) position is the top left corner and the (x2,y2) position is the bottom right corner. If it is filled you can define the individual colours for each corner point and if these colours are not the same, you will get a gradient effect from one to the other (the colour settings will over-ride the base colour set with the function draw_set_colour()). Please note that the rectangle being drawn may need different values (+/-1 on the x, y, or width or height) to be drawn with the desired dimensions due to differences across the various supported platforms.</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the left of the rectangle.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the top of the rectangle.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the right of the rectangle.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the bottom of the rectangle.</Parameter>
			<Parameter Name="col1" Type="Constant.Color" Optional="false">The colour of the top left corner.</Parameter>
			<Parameter Name="col2" Type="Constant.Color" Optional="false">The colour of the top right corner.</Parameter>
			<Parameter Name="col3" Type="Constant.Color" Optional="false">The colour of the bottom right corner.</Parameter>
			<Parameter Name="col4" Type="Constant.Color" Optional="false">The colour of the bottom left corner.</Parameter>
			<Parameter Name="outline" Type="Bool" Optional="false">Whether the rectangle is an outline (true) or filled in (false).</Parameter>
		</Function>
		<Function Name="draw_roundrect" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can draw either an outline of a rounded rectangle or a filled rounded rectangle where the (x1,y1) position is the top left corner and the (x2,y2) position is the bottom right corner. You can define how precise the drawing of the corners is with the function draw_set_circle_precision(), but this function uses a fixed radius for them (should you need to change the corner radius, use the function draw_roundrect_ext()). Please note that the rectangle being drawn may need different values (+/-1 on the x, y, or width or height) to be drawn with the desired dimensions due to differences across the various supported platforms.</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the top left corner of the rounded rectangle (as if it were a normal rectangle).</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the top left corner of the rounded rectangle (as if it were a normal rectangle).</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the bottom right corner of the rounded rectangle (as if it were a normal rectangle).</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the bottom right corner of the rounded rectangle (as if it were a normal rectangle).</Parameter>
			<Parameter Name="outline" Type="Bool" Optional="false">Whether the rounded rectangle is drawn filled (false) or as a one pixel wide outline (true).</Parameter>
		</Function>
		<Function Name="draw_roundrect_colour" Deprecated="false" ReturnType="Undefined" Locale="GB" Pure="true">
			<Description>With this function you can draw either an outline of a rounded rectangle or a filled rounded rectangle where the (x1,y1) position is the top left corner and the (x2,y2) position is the bottom right corner. If it is filled you can define the individual colours for the centre and the edges, and if these colours are not the same, you will get a gradient effect from one to the other (the colour settings will over-ride the base colour set with the function draw_set_colour()).You can define how precise the drawing of the corners is with the function draw_set_circle_precision(), but the corners are always drawn with a fixed radius. Should you need to change the corner radius you should use the function draw_roundrect_colour_ext(). Please note that the rectangle being drawn may need different values (+/-1 on the x, y, or width or height) to be drawn with the desired dimensions due to differences across the various supported platforms.</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the left of the rounded rectangle.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the top of the rounded rectangle.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the right of the rounded rectangle.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the bottom of the rounded rectangle.</Parameter>
			<Parameter Name="col1" Type="Constant.Color" Optional="false">The center colour.</Parameter>
			<Parameter Name="col2" Type="Constant.Color" Optional="false">The outside edge colour.</Parameter>
			<Parameter Name="outline" Type="Bool" Optional="false">Whether the rectangle is an outline (true) or filled in (false).</Parameter>
		</Function>
		<Function Name="draw_roundrect_colour_ext" Deprecated="false" ReturnType="Undefined" Locale="GB" Pure="true">
			<Description>With this function you can draw either an outline of a rounded rectangle or a filled rounded rectangle where the (x1,y1) position is the top left corner and the (x2,y2) position is the bottom right corner. If the rectangle is filled, then the colour arguments will be used to generate a colour gradient from the centre to the edges, where colour 1 is the centre colour and colour 2 the edge colour. You must also supply radius values for the x and y axis (in pixels) and the corners will be rounded by these amounts. You can define how precise the drawing of the corners is with the function draw_set_circle_precision(). Please note that the rectangle being drawn may need different values (+/-1 on the x, y, or width or height) to be drawn with the desired dimensions due to differences across the various supported platforms.</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the left of the rounded rectangle.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the top of the rounded rectangle.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the right of the rounded rectangle.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the bottom of the rounded rectangle.</Parameter>
			<Parameter Name="xrad" Type="Real" Optional="false">The radius of the curve along the x axis from the rectangle corners.</Parameter>
			<Parameter Name="yrad" Type="Real" Optional="false">The radius of the curve along the y axis from the rectangle corners.</Parameter>
			<Parameter Name="col1" Type="Constant.Color" Optional="false">The center colour.</Parameter>
			<Parameter Name="col2" Type="Constant.Color" Optional="false">The outside edge colour.</Parameter>
			<Parameter Name="outline" Type="Bool" Optional="false">Whether the rectangle is an outline (true) or filled in (false).</Parameter>
		</Function>
		<Function Name="draw_roundrect_ext" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can draw either an outline of a rounded rectangle or a filled rounded rectangle where the (x1,y1) position is the top left corner and the (x2,y2) position is the bottom right corner. You must also supply radius values for the x and y axis (in pixels) and the corners will be rounded by these amounts. You can define how precise the drawing of the corners is with the function draw_set_circle_precision(). Please note that the rectangle being drawn may need different values (+/-1 on the x, y, or width or height) to be drawn with the desired dimensions due to differences across the various supported platforms.</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the top left corner of the rounded rectangle (as if it were a normal rectangle).</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the top left corner of the rounded rectangle (as if it were a normal rectangle).</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the bottom right corner of the rounded rectangle (as if it were a normal rectangle).</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the bottom right corner of the rounded rectangle (as if it were a normal rectangle).</Parameter>
			<Parameter Name="xrad" Type="Real" Optional="false">The radius of the curve along the x axis from the rectangle corners.</Parameter>
			<Parameter Name="yrad" Type="Real" Optional="false">The radius of the curve along the y axis from the rectangle corners.</Parameter>
			<Parameter Name="outline" Type="Bool" Optional="false">Whether the rounded rectangle is drawn filled (false) or as a one pixel wide outline (true).</Parameter>
		</Function>
		<Function Name="draw_set_circle_precision" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>To optimise performance when drawing circles, GameMaker basically draws a polygon shape with enough sides to make it appear circular. However, depending on how big or small you need your circles to be, you may find that changing this value can help increase the performance of your game, or make the circles look better. The precision value that you can input into this function is the number of sides the circle polygon has, and this number can be anything between 4 and 64, but must be a number divisible by 4, with a default value of 24.</Description>
			<Parameter Name="precision" Type="Real" Optional="false">The precision of all circles drawn after this function is called.</Parameter>
		</Function>
		<Function Name="draw_triangle" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can draw either an outline of a triangle or a filled triangle.</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the triangle&apos;s first corner.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the triangle&apos;s first corner.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the triangle&apos;s second corner.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the triangle&apos;s second corner.</Parameter>
			<Parameter Name="x3" Type="Real" Optional="false">The x coordinate of the triangle&apos;s third corner.</Parameter>
			<Parameter Name="y3" Type="Real" Optional="false">The y coordinate of the triangle&apos;s third corner.</Parameter>
			<Parameter Name="outline" Type="Bool" Optional="false">Whether the triangle is drawn filled (false) or as a one pixel wide outline (true).</Parameter>
		</Function>
		<Function Name="draw_triangle_colour" Deprecated="false" ReturnType="Undefined" Locale="GB" Pure="true">
			<Description>With this function you can draw either an outline of a triangle or a filled triangle. If it is filled you can define the individual colours for each corner point and if these colours are not the same, you will get a gradient effect from one to the other (the colour settings will over-ride the base colour set with the function draw_set_colour()).</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the triangle&apos;s first corner.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the triangle&apos;s first corner.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the triangle&apos;s second corner.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the triangle&apos;s second corner.</Parameter>
			<Parameter Name="x3" Type="Real" Optional="false">The x coordinate of the triangle&apos;s third corner.</Parameter>
			<Parameter Name="y3" Type="Real" Optional="false">The y coordinate of the triangle&apos;s third corner.</Parameter>
			<Parameter Name="col1" Type="Constant.Color" Optional="false">The colour of the first corner.</Parameter>
			<Parameter Name="col2" Type="Constant.Color" Optional="false">The colour of the second corner.</Parameter>
			<Parameter Name="col3" Type="Constant.Color" Optional="false">The colour of the third corner.</Parameter>
			<Parameter Name="outline" Type="Bool" Optional="false">Whether the triangle is an outline (true) or filled in (false).</Parameter>
		</Function>
		<Function Name="colour_get_blue" Deprecated="false" ReturnType="Real" Locale="GB" Pure="true">
			<Description>This function returns the amount of blue used to make the given colour, with the value being between 0 and 255, where 0 is no blue and 255 is all blue. The following image illustrates this:</Description>
			<Parameter Name="col" Type="Constant.Color" Optional="false">The colour to check</Parameter>
		</Function>
		<Function Name="colour_get_green" Deprecated="false" ReturnType="Real" Locale="GB" Pure="true">
			<Description>This function returns the amount of green used to make the given colour, with the value being between 0 and 255, where 0 is no green and 255 is all green. The following image illustrates this:</Description>
			<Parameter Name="col" Type="Constant.Color" Optional="false">The colour to check</Parameter>
		</Function>
		<Function Name="colour_get_hue" Deprecated="false" ReturnType="Real" Locale="GB" Pure="true">
			<Description>This function will return the hue of the given colour. This is the &quot;pure&quot; colour tone which is part of the hue, saturation and value (luminosity) method for defining a colour. The following image illustrates how this value corresponds to the HSV scale of colour:</Description>
			<Parameter Name="col" Type="Constant.Color" Optional="false">The colour to check</Parameter>
		</Function>
		<Function Name="colour_get_red" Deprecated="false" ReturnType="Real" Locale="GB" Pure="true">
			<Description>This function returns the amount of red used to make the given colour, with the value being between 0 and 255, where 0 is no red and 255 is all red. The following image illustrates this:</Description>
			<Parameter Name="col" Type="Constant.Color" Optional="false">The colour to check</Parameter>
		</Function>
		<Function Name="colour_get_saturation" Deprecated="false" ReturnType="Real" Locale="GB" Pure="true">
			<Description>This function will return the saturation of the given colour. This is the amount of the colour tone that is mixed into the final colour and is part of the hue, saturation and value (luminosity) method for defining a colour. The following image illustrates how this value corresponds to the HSV scale of colour:</Description>
			<Parameter Name="col" Type="Constant.Color" Optional="false">The colour to check</Parameter>
		</Function>
		<Function Name="colour_get_value" Deprecated="false" ReturnType="Real" Locale="GB" Pure="true">
			<Description>This function will return the value (luminosity) of the given colour. This is the amount of the &quot;light&quot; that is mixed into the final colour and is part of the hue, saturation and value method for defining a colour. The following image illustrates how this value corresponds to the HSV scale of colour:</Description>
			<Parameter Name="col" Type="Constant.Color" Optional="false">The colour to check</Parameter>
		</Function>
		<Function Name="draw_clear" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to clear the entire screen (with no alpha blend) to the given colour, and is only for use in the draw event of an instance (it will not show if used in any other event). It can also be useful for clearing surfaces when they are newly created.</Description>
			<Parameter Name="col" Type="Constant.Color" Optional="false">The colour with which the screen will be cleared</Parameter>
		</Function>
		<Function Name="draw_clear_alpha" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to clear the entire screen with a given colour and the alpha component of the destination is set to the value you have set - this function does not do any blending as it works but any subsequent blend operations can be set up to use the destination alpha that you have set. This is only for use in the draw event of an instance (it will not show if used in any other event), and it can also be very useful for clearing surfaces when they are newly created.</Description>
			<Parameter Name="col" Type="Constant.Color" Optional="false">The colour with which the screen will be cleared</Parameter>
			<Parameter Name="alpha" Type="Constant.Color" Optional="false">The transparency of the colour with which the screen will be cleared</Parameter>
		</Function>
		<Function Name="draw_getpixel" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the colour value of any pixel that is being drawn to the current render target. This means that the results will depend on the event in which the function is called, and also on the target surface being used. Note that this will not return any alpha values, for that you should use draw_getpixel_ext().</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of the pixel to check</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of the pixel to check</Parameter>
		</Function>
		<Function Name="draw_getpixel_ext" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the full abgr 32bit value of any pixel that is being drawn to the current render target. This means that the results will depend on the event in which the function is called, and also on the target surface being used.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of the pixel to check</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of the pixel to check</Parameter>
		</Function>
		<Function Name="draw_get_alpha" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the current value of the draw alpha, which will range between 0 (fully transparent) and 1 (fully opaque). The draw alpha affects the transparency of all draw functions, and can be set with the draw_set_alpha() function.</Description>
		</Function>
		<Function Name="draw_get_colour" Deprecated="false" ReturnType="Real" Locale="GB" Pure="true">
			<Description>This function returns the current draw colour which is used for drawing forms, text, primitives and un-textured 3D models. This can be set with the draw_set_colour() function.</Description>
		</Function>
		<Function Name="draw_set_alpha" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the base draw alpha for the game. This value can be set from 0 to 1 with 0 being fully transparent and 1 being fully opaque (the default value), and will affect all further drawing, including backgrounds, sprites, fonts, primitives and 3D.</Description>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha to set (between 0 and 1)</Parameter>
		</Function>
		<Function Name="draw_set_colour" Deprecated="false" ReturnType="Undefined" Locale="GB" Pure="false">
			<Description>With this function you can set the base draw colour for the game. This value will affect all further drawing where appropriate, including fonts, forms, primitives and 3D. If any of those assets are drawn with their own colour value changed, this value will be ignored.</Description>
			<Parameter Name="col" Type="Constant.Color" Optional="false">The colour to set for drawing.</Parameter>
		</Function>
		<Function Name="make_colour_hsv" Deprecated="false" ReturnType="Real" Locale="GB" Pure="true">
			<Description>GameMaker provides this function (as well as others) to permit the user to make their own colours. This particular function takes three component parts, the hue, the saturation and the value (also know as &quot;luminosity&quot;) to create the colour desired. These values are taken as being between 0 and 255 so you can make 16,777,216 (256*256*256) colours with this! Below you can see an image of how these components look when separated:</Description>
			<Parameter Name="hue" Type="Real" Optional="false">The hue of the colour</Parameter>
			<Parameter Name="sat" Type="Real" Optional="false">How saturated the colour is</Parameter>
			<Parameter Name="val" Type="Real" Optional="false">How dark the colour is</Parameter>
		</Function>
		<Function Name="make_colour_rgb" Deprecated="false" ReturnType="Real" Locale="GB" Pure="true">
			<Description>GameMaker provides this function (as well as others) to permit the user to make their own colours. This particular function takes three component parts, the red, the green and the blue components of the colour that you wish to make. These values are taken as being between 0 and 255 so you can make 16,777,216 (256*256*256) colours with this! Below you can see an image of how these components look when separated:</Description>
			<Parameter Name="red" Type="Real" Optional="false">The red component of the colour</Parameter>
			<Parameter Name="green" Type="Real" Optional="false">The green component of the colour</Parameter>
			<Parameter Name="blue" Type="Real" Optional="false">The blue component of the colour</Parameter>
		</Function>
		<Function Name="merge_colour" Deprecated="false" ReturnType="Real" Locale="GB" Pure="true">
			<Description>With this function you can take two colours and then merge them together to make a new colour. The amount of each of the component colours can be defined by changing the &quot;amount&quot; argument, where a value of 0 will return the first colour (col1), a value of 1 will return the second colour (col2) and a value in between will return the corresponding mix. For example, a value of 0.5 will mix the two colours equally. The following image illustrates how this works by merging the colours red and blue together:</Description>
			<Parameter Name="col1" Type="Constant.Color" Optional="false">The first colour to merge</Parameter>
			<Parameter Name="col2" Type="Constant.Color" Optional="false">The second colour to merge</Parameter>
			<Parameter Name="amount" Type="Real" Optional="false">How much of each colour should be merged. For example, 0 will return col1, 1 will return col2, and 0.5 would return a merge of both colours equally</Parameter>
		</Function>
		<Function Name="gpu_get_alphatestenable" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check to see whether alpha testing is enabled (returns true) or not (returns false). For more information on alpha testing, see the function gpu_set_alphatestref().</Description>
		</Function>
		<Function Name="gpu_get_alphatestref" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>You can use this function to find the current value for the alpha test reference (default is 0, but you can use gpu_set_alphatestref() to set this value to something other than this).</Description>
		</Function>
		<Function Name="gpu_get_blendenable" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function can be used to retrieve the alpha-blending state. If it returns true then alpha-blending is enabled, and if it returns false it is disabled. By default this is on and so the function will return true</Description>
		</Function>
		<Function Name="gpu_get_blendmode" Deprecated="false" ReturnType="Constant.BlendMode" Pure="true">
			<Description>This function can be used to retrieve the current blend mode being used for drawing. The returned value will be one of the following constants (the default value is bm_normal):</Description>
		</Function>
		<Function Name="gpu_get_blendmode_dest" Deprecated="false" ReturnType="Constant.BlendModeFactor" Pure="true">
			<Description>This function can be used to retrieve the current destination extended blend mode factor being used for drawing. The value returned will be one of the following constants (&quot;s&quot; denotes a value taken from the source while a &quot;d&quot; denotes a value from the destination):</Description>
		</Function>
		<Function Name="gpu_get_blendmode_destalpha" Deprecated="false" ReturnType="Constant.BlendModeFactor" Pure="true">
			<Description>This function can be used to retrieve the current destination extended blend mode alpha factor. The value returned will be one of the following constants (&quot;s&quot; denotes a value taken from the source while a &quot;d&quot; denotes a value from the destination) with only the &quot;A&quot; component being used when drawing:</Description>
		</Function>
		<Function Name="gpu_get_blendmode_ext" Deprecated="false" ReturnType="Array[Constant.BlendModeFactor]" Pure="true">
			<Description>This function can be used to retrieve the current extended blend mode being used for drawing. The function returns a 2 element 1D array with the following elements in it:</Description>
		</Function>
		<Function Name="gpu_get_blendmode_ext_sepalpha" Deprecated="false" ReturnType="Array[Constant.BlendModeFactor]" Pure="true">
			<Description>This function can be used to retrieve the current extended blend mode being used for drawing, separating out the blend modes into two parts - the RGB component and the Alpha component. The function returns a 4 element 1D array with the following elements in it:</Description>
		</Function>
		<Function Name="gpu_get_blendmode_src" Deprecated="false" ReturnType="Constant.BlendModeFactor" Pure="true">
			<Description>This function can be used to retrieve the current source extended blend mode factor being used for drawing. The value returned will be one of the following constants (&quot;s&quot; denotes a value taken from the source while a &quot;d&quot; denotes a value from the destination):</Description>
		</Function>
		<Function Name="gpu_get_blendmode_srcalpha" Deprecated="false" ReturnType="Constant.BlendModeFactor" Pure="true">
			<Description>This function can be used to retrieve the current source extended blend mode alpha factor. The value returned will be one of the following constants (&quot;s&quot; denotes a value taken from the source while a &quot;d&quot; denotes a value from the destination) with only the &quot;A&quot; component being used when drawing:</Description>
		</Function>
		<Function Name="gpu_get_colourwriteenable" Deprecated="false" ReturnType="Array[Bool]" Locale="GB" Pure="true">
			<Description>This function can be used to retrieve the current colour write-enable values. The function returns a 4 element 1D array with the following elements in it which will be either true (enabled) or false (disabled). By default all colour writing is set to true:</Description>
		</Function>
		<Function Name="gpu_get_cullmode" Deprecated="false" ReturnType="Constant.CullMode" Pure="true">
			<Description>This function can be used to retrieve the backface culling mode. The returned value will be one of the following constants (the default value is cull_noculling):</Description>
		</Function>
		<Function Name="gpu_get_fog" Deprecated="false" ReturnType="Array[Real]" Pure="true">
			<Description>This function can be used to retrieve the fog settings. The function returns a 4 element 1D array with the following information:</Description>
		</Function>
		<Function Name="gpu_get_state" Deprecated="false" ReturnType="Id.DsMap" Pure="true">
			<Description>This function will get the current GPU state, returning it as a DS Map. This can then be manipulated or even saved, and you can return this map to the GPU using the function gpu_set_state().</Description>
		</Function>
		<Function Name="gpu_get_texfilter" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check to see whether texture filtering (linear interpolation) is enabled (returns true) or not (returns false). For more information on texture filtering, see the function gpu_set_texfilter().</Description>
		</Function>
		<Function Name="gpu_get_texfilter_ext" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check to see whether texture interpolation (linear interpolation) is enabled (returns true) or not (returns false) for a given shader sampler texture.</Description>
			<Parameter Name="sampler_id" Type="Id.Sampler" Optional="false">The sampler id from the shader.</Parameter>
		</Function>
		<Function Name="gpu_get_texrepeat" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check to see whether texture repeating is enabled (returns true) or not (returns false). For more information on texture repeating, see the function gpu_set_texrepeat().</Description>
		</Function>
		<Function Name="gpu_get_texrepeat_ext" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check to see whether texture repeating is enabled (returns true) or not (returns false) for a given shader sampler texture.</Description>
			<Parameter Name="sampler_id" Type="Id.Sampler" Optional="false">The sampler id from the shader.</Parameter>
		</Function>
		<Function Name="gpu_get_zfunc" Deprecated="false" ReturnType="Constant.ZFunction" Pure="true">
			<Description>This function can be used to retrieve the z comparison mode. The value returned will be one of the following constants (the default value is cmpfunc_lessequal):</Description>
		</Function>
		<Function Name="gpu_get_ztestenable" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function can be used to retrieve whether z-testing is enabled (the function returns true) or not (the function returns false). The default value is that z-testing is disabled, so the function will return false.</Description>
		</Function>
		<Function Name="gpu_get_zwriteenable" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function can be used to retrieve whether z-writing is enabled (the function returns true) or not (the function returns false). The default value is that z-writing is enabled, so the function will return true.</Description>
		</Function>
		<Function Name="gpu_pop_state" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function pops the previous GPU state from the stack and applies it. See gpu_push_state() for more information.</Description>
		</Function>
		<Function Name="gpu_push_state" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can push the current GPU state onto a stack to be used later. You would generally use this if you want to &quot;save&quot; the current GPU state (things like blend mode, alpha writing, culling, etc... will all be pushed to the stack), then draw something with different settings, and then reset the GPU stack to what it was before (by calling gpu_pop_state()).</Description>
		</Function>
		<Function Name="gpu_set_alphatestenable" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will enable or disable alpha testing for your game (by default this is disabled). By switching alpha testing on you can then use the companion function gpu_set_alphatestref() to set the &quot;cut-off&quot; value at which all alpha values will be set to 0. The image below shows the difference that can be seen when alpha testing is switched on or off:</Description>
			<Parameter Name="enable" Type="Bool" Optional="false">Enable or disable alpha testing (true / false)</Parameter>
		</Function>
		<Function Name="gpu_set_alphatestref" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will set the reference value for the alpha testing (when it has been enabled using the gpu_set_alphatestenable()). This is the &quot;cut-off&quot; threshold at which pixels with alpha will not be drawn.</Description>
			<Parameter Name="val" Type="Real" Optional="false">Sets the reference value for alpha testing from 0 to 255 (default value is 0)</Parameter>
		</Function>
		<Function Name="gpu_set_blendenable" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to toggle alpha-blending on and off. Basically, if you have this set to false, all images being drawn will be drawn 100% opaque, meaning that any transparent, or semi transparent, areas of a sprite or background will be visible as a solid colour. It is a good idea to have alpha blending off whenever possible (especially when developing for mobile devices) as this greatly increases the draw speed.</Description>
			<Parameter Name="enable" Type="Bool" Optional="false">Enable or disable alpha blending value (true or false).</Parameter>
		</Function>
		<Function Name="gpu_set_blendmode" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>When GameMaker goes to draw a pixel there is a source colour (the colour of the pixel we&apos;re going to draw) and a destination colour(the colour that&apos;s already in the pixel we&apos;re drawing to), so when determining the new colour of the pixel, the source and destination colours are calculated according to the chosen blend mode. Each component of the colours is stored as a floating point value between 0 and 1, and the new colour is calculated by multiply each component of the source colour by some factor and by multiplying each component of destination colour by some other factor and then adding the results together component by component.</Description>
			<Parameter Name="mode" Type="Constant.BlendMode" Optional="false">The blend mode to use (see the table above)</Parameter>
		</Function>
		<Function Name="gpu_set_blendmode_ext" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>When GameMaker goes to draw a pixel there is a source colour (the colour of the pixel we&apos;re going to draw) and a destination colour (the colour that&apos;s already in the pixel we&apos;re drawing to), so when determining the new colour of the pixel, the source and destination colours are calculated according to the chosen blend mode. Each component of the colours is stored as a floating point value between 0 and 1, and the new colour is calculated by multiply each component of the source colour by some factor and by multiplying each component of destination colour by some other factor and then adding the results together component by component.</Description>
			<Parameter Name="src" Type="Constant.BlendModeFactor" Optional="false">Source blend mode factor(see constants above).</Parameter>
			<Parameter Name="dest" Type="Constant.BlendModeFactor" Optional="false">Destination blend mode factor (see constants above)</Parameter>
		</Function>
		<Function Name="gpu_set_blendmode_ext_sepalpha" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>When GameMaker goes to draw a pixel there is a source colour (the colour of the pixel we&apos;re going to draw) and a destination colour(the colour that&apos;s already in the pixel we&apos;re drawing to), so when determining the new colour of the pixel, the source and destination colours are calculated according to the chosen blend mode. Each component of the colours is stored as a floating point value between 0 and 1, and the new colour is calculated by multiply each component of the source colour by some factor and by multiplying each component of destination colour by some other factor and then adding the results together component by component.</Description>
			<Parameter Name="src" Type="Constant.BlendModeFactor" Optional="false">Source blend mode factor for RGB (see constants above).</Parameter>
			<Parameter Name="dest" Type="Constant.BlendModeFactor" Optional="false">Destination blend mode factor for RGB(see constants above)</Parameter>
			<Parameter Name="alphasrc" Type="Constant.BlendModeFactor" Optional="false">Source blend mode factor Alpha (see constants above).</Parameter>
			<Parameter Name="alphadest" Type="Constant.BlendModeFactor" Optional="false">Destination blend mode factor Alpha (see constants above)</Parameter>
		</Function>
		<Function Name="gpu_set_colourwriteenable" Deprecated="false" ReturnType="Undefined" Locale="GB" Pure="false">
			<Description>With this function you can switch on or off the colour channels and the alpha channel for all further drawing. For example, you can use this function to create alpha-channel only surfaces (switch off the RGB writing before using the surface), or to create special effects while drawing to the screen. The default value for each of the components is true, and can be supplied as either four unique arguments or as a 4 element 1D array with the following elements in it which will be either true (enabled) or false (disabled):</Description>
			<Parameter Name="red" Type="Bool,Array[Bool]" Optional="false">Enable/disable the red channel</Parameter>
			<Parameter Name="green" Type="Bool" Optional="true">Enable/disable the green channel</Parameter>
			<Parameter Name="blue" Type="Bool" Optional="true">Enable/disable the blue channel</Parameter>
			<Parameter Name="alpha" Type="Bool" Optional="true">Enable/disable the alpha channel</Parameter>
		</Function>
		<Function Name="gpu_set_cullmode" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set the backface culling mode. A polygon (primitive) has a front and a back side. The front side is said to be the side where the vertices are defined in counter-clockwise order. Normally both sides are drawn, but if you make a closed shape (like a pyramid) then this is a waste of processing power because the back side of the triangle can never be seen. It&apos;s in these cases that you can switch on backface culling, as this saves about half the amount of drawing time, although it means you have the task of defining your polygons in the correct way to prevent issues.</Description>
			<Parameter Name="cullmode" Type="Constant.CullMode" Optional="false">The cull mode to use (see list above)</Parameter>
		</Function>
		<Function Name="gpu_set_fog" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to enable or disable fog drawing. Fog can be used in 3D games to make instances in the distance look blurred or even disappear, which helps in creating atmosphere as well as masking the fact that you are not drawing instances that are far away. You set whether it is enabled (true) or disabled (false), the colour that the fog should use for blending, as well as the start and end draw distances. Note that the fog start indicates the radius relative to the view camera where the fog starts, and the fog end indicates at which radius (also relative) instances will be completely invisible.</Description>
			<Parameter Name="enable" Type="Bool" Optional="false">Enable or disable fog</Parameter>
			<Parameter Name="colour" Type="Constant.Color" Optional="false">The fog colour</Parameter>
			<Parameter Name="start" Type="Real" Optional="false">The distance to start applying fog from</Parameter>
			<Parameter Name="end" Type="Real" Optional="false">The distance to end the fog</Parameter>
		</Function>
		<Function Name="gpu_set_state" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will set the current GPU state using the passed-in DS Map. The supplied map can be created using the function gpu_get_state().</Description>
			<Parameter Name="ds_map" Type="Id.DsMap" Optional="false">The GPU state to set as a DS Map.</Parameter>
		</Function>
		<Function Name="gpu_set_texfilter" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set the texture filtering (linear interpolation) of all images drawn on the game screen. When this is enabled (true) all textures will be smoothed when drawn (this includes sprites as they too are considered textures), meaning that when scaled or moved if there is not a 1:1 pixel ratio then there will be a &quot;smudging&quot; across various pixels which may make images appear blurry depending on the art style used. If this is disabled (false) then images will be drawn based on the nearest pixel when scaled or moving which may lead to &quot;blocky&quot; images. The default value is false, and this can also be changed in the Global Game Options for individual target platforms.</Description>
			<Parameter Name="enable" Type="Bool" Optional="false">Enable or disable texture filtering (true / false)</Parameter>
		</Function>
		<Function Name="gpu_set_texfilter_ext" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set the linear interpolation for a single sampler &quot;slot&quot; when using Shaders in GameMaker. When this is enabled (true) the sampler texture will be smoothed and if this is disabled (false) then images will be drawn based on the nearest pixel. The default value is that set by the Global Game Options for your game, or that set using the function gpu_set_texfilter().</Description>
			<Parameter Name="sampler_id" Type="Id.Sampler" Optional="false">The sampler id from the shader.</Parameter>
			<Parameter Name="enable" Type="Bool" Optional="false">Enable or disable texture filtering (true / false)</Parameter>
		</Function>
		<Function Name="gpu_set_texrepeat" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to indicate to GameMaker whether textures should repeat (true) or not (false) when used for models and primitives. Normally texture widths and heights lie in the range 0 - 1, but if you specify a value larger than 1 by default the rest is not drawn (the entire texture will be drawn with an &quot;empty&quot; section corresponding to the percentage over 1 that is used. So a value of 2 for a texture width or height would draw the texture in half the space and leave the other half empty). However, by using this function to set repeat to true the texture is repeated automatically over all models and primitives. The likely use case for these functions is for repeating a texture in 3D but in order for it to work and not pull images from the rest of the texture page, the sprite used will need to be marked as being on a &quot;Separate Texture Page&quot; in the Sprite Editor.</Description>
			<Parameter Name="enable" Type="Bool" Optional="false">Enable or disable texture filtering (true / false)</Parameter>
		</Function>
		<Function Name="gpu_set_texrepeat_ext" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set whether a single sampler &quot;slot&quot; repeats the given texture when using Shaders in GameMaker . Setting it to true will repeat the texture if the uv coordinates are out with the 0-1 range, while a setting of false will mean no repeating. The likely use case for these functions is for repeating a texture in 3D but in order for it to work and not pull images from the rest of the texture page, the sprite used will need to be marked as being on a &quot;Separate Texture Page&quot; in the Sprite Editor.</Description>
			<Parameter Name="sampler_id" Type="Id.Sampler" Optional="false">The sampler id from the shader.</Parameter>
			<Parameter Name="enable" Type="Bool" Optional="false">Enable or disable texture filtering (true / false)</Parameter>
		</Function>
		<Function Name="gpu_set_zfunc" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set the z-buffer testing comparison mode (see gpu_set_ztestenable() for more information). The values available for use are any of the following constants (the default value is cmpfunc_lessequal):</Description>
			<Parameter Name="cmp_func" Type="Constant.ZFunction" Optional="false">The comparison mode to use (see list above)</Parameter>
		</Function>
		<Function Name="gpu_set_ztestenable" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to toggle z-buffer testing on or off, affecting how things will be drawn (in general only of use when working with 3D projects). Essentially, by default when z-testing is off and you have two objects drawing to the same space, both objects will be rendered regardless of whether one will over-draw the other, resulting in unnecessary draw calls. If you switch this on then the z-buffer is tested to see whether an object will be &quot;visible&quot; and not drawn if it&apos;s not. Note that this is the default behaviour, but you can change this by changing the type of comparison used for z-buffer testing (see the function gpu_set_zfunc().</Description>
			<Parameter Name="enable" Type="Bool" Optional="false">Enable or disable z-buffer testing (true or false).</Parameter>
		</Function>
		<Function Name="gpu_set_zwriteenable" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to toggle on (true) and off (false) depth ordering using the z-buffer. When an instance is rendered in GameMaker , the depth of a generated pixel (its z coordinate) is stored in the z-buffer, then, if another instance of the scene must be rendered at the same pixel, the two depths are compared (z-testing - see gpu_set_ztestenable()) and the one &quot;closer&quot; to the observer is then saved to the z-buffer, replacing the old one. However, this is not always what you wish to happen and there are moments when you may want something to be drawn over everything else, no matter what its z value is. In those cases you can use this function to switch off writing to the z-buffer and so force whatever is being drawn to be drawn over everything else. Note that the description given here is for the default z-testing comparison mode, but that can be changed</Description>
			<Parameter Name="enable" Type="Bool" Optional="false">The comparison mode to use (see list above)</Parameter>
		</Function>
		<Function Name="draw_get_lighting" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will return whether lighting is enabled (true) or not (false) for the whole scene.</Description>
		</Function>
		<Function Name="draw_light_define_ambient" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function is used to control the ambient light of a scene, which is the light that you have in a scene even without having defined any point or directional light sources. It is effectively the overall colour and brightness (or darkness) of a scene. The default colour is c_black.</Description>
			<Parameter Name="col" Type="Constant.Color" Optional="false">The colour to use (either a constant, a real or a hex value).</Parameter>
		</Function>
		<Function Name="draw_light_define_direction" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function is for defining a directional light, where the direction and intensity are set by the values input for the x, y and z unit vector (meaning that they must be between -1 and 1, where 1 or -1 is full intensity, and 0 is no intensity). The lights can also be given a colour, which will also affect the perceived intensity of the light as certain colours appear &quot;darker&quot; than others. You must also give the light an index number which what will be used in other functions to reference it.</Description>
			<Parameter Name="ind" Type="Real" Optional="false">The index number of the light (arbitrary)</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x component of the light vector</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y component of the light vector</Parameter>
			<Parameter Name="z" Type="Real" Optional="false">The z component of the light vector</Parameter>
			<Parameter Name="col" Type="Constant.Color" Optional="false">The colour to use for the light (either a constant, a real or a hex value).</Parameter>
		</Function>
		<Function Name="draw_light_define_point" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function is for defining a positional light, where you can define the x, y and z position of the light, the light range and its colour (which will also affect the perceived intensity of the light as certain colours appear &quot;darker&quot; than others). You must also give the light an index number which what will be used in other functions to reference it.</Description>
			<Parameter Name="ind" Type="Real" Optional="false">The index number of the light (arbitrary)</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position of the light</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position of the light</Parameter>
			<Parameter Name="z" Type="Real" Optional="false">The z position of the light</Parameter>
			<Parameter Name="range" Type="Real" Optional="false">The light range (in pixels)</Parameter>
			<Parameter Name="col" Type="Constant.Color" Optional="false">The colour to use for the light (either a constant, a real or a hex value).</Parameter>
		</Function>
		<Function Name="draw_light_enable" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function is used to enable a defined light. When you define a positional or a directional light you must assign it an index number which is then used by this function to switch the light on or off. Default is disabled (false).</Description>
			<Parameter Name="ind" Type="Real" Optional="false">The index number of the light (from 0 to 7)</Parameter>
			<Parameter Name="enable" Type="Bool" Optional="false">Enable or disable all lighting (true or false)</Parameter>
		</Function>
		<Function Name="draw_light_get" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will get the specified light parameters as an array with the following 6 elements -</Description>
			<Parameter Name="ind" Type="Real" Optional="false">The index number of the light (from 0 to 7)</Parameter>
		</Function>
		<Function Name="draw_light_get_ambient" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the current colour used for ambient lighting.</Description>
		</Function>
		<Function Name="draw_set_lighting" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function is used to enable all lighting effects. Default is disabled (false).</Description>
			<Parameter Name="enable" Type="Bool" Optional="false">enable or disable all lighting (true or false)</Parameter>
		</Function>
		<Function Name="gpu_get_tex_max_aniso" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the current maximum level of anisotropy when using the tf_anisotropic filter mode (see gpu_get_tex_mip_filter() for more information). The returned value will range between 1 and 16.</Description>
		</Function>
		<Function Name="gpu_get_tex_max_aniso_ext" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the current maximum level of anisotropy when using the tf_anisotropic filter mode (see gpu_get_tex_mip_filter() for more information) on a shader sampler. You supply the index value for the shader sampler (as returned by the function shader_get_sampler_index(), and the function will return a value within the range of 1 and 16.</Description>
			<Parameter Name="sampler_index" Type="Id.Uniform" Optional="false">The index of the shader sampler to get</Parameter>
		</Function>
		<Function Name="gpu_get_tex_max_mip" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the currently set maximum mipmap level which is to be used, where a value of 0 is the highest resolution, 1 is to use the first mipmap, 2 is the second etc... Note that this can be quite useful for avoiding bleeding artifacts when rendering textures, for example, setting the texture page border to 8px and then setting the max mipmap level to 3 will ensure you don&apos;t get any bleeding problems at greater render distances.</Description>
		</Function>
		<Function Name="gpu_get_tex_max_mip_ext" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the currently set maximum mipmap level which is to be used for a given shader sampler. You supply the index value for the shader sampler (as returned by the function shader_get_sampler_index(), and the function will return the current maximum mipmap level, where a value of 0 is the highest resolution, 1 is to use the first mipmap, 2 is the second etc... Note that this can be quite useful for avoiding bleeding artifacts when rendering textures, for example, setting the texture page border to 8px and then setting the max mipmap level to 3 will ensure you don&apos;t get any bleeding problems at greater render distances.</Description>
			<Parameter Name="sampler_index" Type="Id.Uniform" Optional="false">The index of the shader sampler to get</Parameter>
		</Function>
		<Function Name="gpu_get_tex_min_mip" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the minimum mipmap level which is currently used, where a value of 0 is the highest resolution, 1 is to use the first mipmap, 2 is the second etc...</Description>
		</Function>
		<Function Name="gpu_get_tex_min_mip_ext" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the minimum mipmap level which is currently used for a given shader sampler. You supply the index value for the shader sampler (as returned by the function shader_get_sampler_index(), and the function will return a value of 0 for full resolution, 1 for the first mipmap, 2 for the second etc...</Description>
			<Parameter Name="sampler_index" Type="Id.Uniform" Optional="false">The index of the shader sampler to get</Parameter>
		</Function>
		<Function Name="gpu_get_tex_mip_bias" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can retrieve the mipmap bias value, where a value of 0 equals no bias, 1 equals the first mipmap, 2 equals the second mipmap etc... This controls the rate at which the mip map is swapped and will generally make rendered textures blurrier the higher the value and the greater the &quot;distance&quot; being viewed. Note that this can return negative values too, in which case rendered textures will be sharper over a greater distance the lower the value.</Description>
		</Function>
		<Function Name="gpu_get_tex_mip_bias_ext" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can retrieve the mipmap bias value for a given shader sampler. You supply the index value for the shader sampler (as returned by the function shader_get_sampler_index(), and the function will return a value of 0.0 for no bias, or a greater value where 1 equals the first mipmap, 2 equals the second mipmap etc... This controls the rate at which the mip map is swapped and will generally make the shader textures blurrier the higher the value and the greater the &quot;distance&quot; being viewed. Note that this can return negative values too, in which case shader textures will be sharper over a greater distance the lower the value.</Description>
			<Parameter Name="sampler_index" Type="Id.Uniform" Optional="false">The index of the shader sampler to get</Parameter>
		</Function>
		<Function Name="gpu_get_tex_mip_enable" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get whether mipmapping is switched off, switched on for everything or switched on only for texture groups selected in the Texture Group Manager. The function will return one of the constants listed below, with the default setting being mip_markedonly.</Description>
		</Function>
		<Function Name="gpu_get_tex_mip_enable_ext" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get whether mipmapping is switched off, switched on for everything or switched on only for texture groups selected in the Texture Group Manager on a shader sampler. You supply the index value for the shader sampler (as returned by the function shader_get_sampler_index(), and the function will return one of the constants listed below.</Description>
			<Parameter Name="sampler_index" Type="Id.Uniform" Optional="false">The index of the shader sampler to get</Parameter>
		</Function>
		<Function Name="gpu_get_tex_mip_filter" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the current mip filter mode. The mode value returned by the function will be one of the constants listed below.</Description>
		</Function>
		<Function Name="gpu_get_tex_mip_filter_ext" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the current mip filter mode for a given shader sampler. You supply the index value for the shader sampler (as returned by the function shader_get_sampler_index(), and the function will return one of the mode value constants listed below.</Description>
			<Parameter Name="sampler_index" Type="Id.Uniform" Optional="false">The index of the shader sampler to get</Parameter>
		</Function>
		<Function Name="gpu_set_tex_max_aniso" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can set the current maximum level of anisotropy when using the tf_anisotropic filter mode (see gpu_get_tex_mip_filter() for more information). The input value must range between 1 and 16.</Description>
			<Parameter Name="maxaniso" Type="Real" Optional="false">The maximum level for anisotropic filtering (default: 16)</Parameter>
		</Function>
		<Function Name="gpu_set_tex_max_aniso_ext" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can set the maximum level of anisotropy when using the tf_anisotropic filter mode (see gpu_get_tex_mip_filter() for more information) on a shader sampler. You supply the index value for the shader sampler (as returned by the function shader_get_sampler_index(), and then a value within the range of 1 and 16 to set the level.</Description>
			<Parameter Name="sampler_index" Type="Id.Uniform" Optional="false">The index of the shader sampler to get</Parameter>
			<Parameter Name="maxaniso" Type="Real" Optional="false">The maximum anisotropic level to use (default: 16).</Parameter>
		</Function>
		<Function Name="gpu_set_tex_max_mip" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can set the currently set maximum mipmap level which is to be used, where a value of 0 is the highest resolution, 1 is to use the first mipmap, 2 is the second etc... Note that this can be quite useful for avoiding bleeding artifacts when rendering textures, for example, setting the texture page border to 8px and then setting the max mipmap level to 3 will ensure you don&apos;t get any bleeding problems at greater render distances.</Description>
			<Parameter Name="maxmip" Type="Real" Optional="false">The maximum mipmap level (default: 16)</Parameter>
		</Function>
		<Function Name="gpu_set_tex_max_mip_ext" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can get the currently set maximum mipmap level which is to be used for a given shader sampler. You supply the index value for the shader sampler (as returned by the function shader_get_sampler_index(), and the function will return the current maximum mipmap level, where a value of 0 is the highest resolution, 1 is to use the first mipmap, 2 is the second etc... Note that this can be quite useful for avoiding bleeding artifacts when rendering textures, for example, setting the texture page border to 8px and then setting the max mipmap level to 3 will ensure you don&apos;t get any bleeding problems at greater render distances.</Description>
			<Parameter Name="sampler_index" Type="Id.Uniform" Optional="false">The index of the shader sampler to get</Parameter>
			<Parameter Name="maxmip" Type="Real" Optional="false">The maximum mipmap level value to use (default: 16)</Parameter>
		</Function>
		<Function Name="gpu_set_tex_min_mip" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can set the minimum mipmap level which is currently used, where a value of 0 is the highest resolution, 1 is to use the first mipmap, 2 is the second etc...</Description>
			<Parameter Name="minmip" Type="Real" Optional="false">The minimum mipmap level to use</Parameter>
		</Function>
		<Function Name="gpu_set_tex_min_mip_ext" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can set the minimum mipmap level which is currently used for a given shader sampler. You supply the index value for the shader sampler (as returned by the function shader_get_sampler_index(), and then give a value, where 0 is for full resolution, 1 is for the first mipmap, 2 for the second etc...</Description>
			<Parameter Name="sampler_index" Type="Id.Uniform" Optional="false">The index of the shader sampler to get</Parameter>
			<Parameter Name="minmip" Type="Real" Optional="false">The minimum mipmap level to use</Parameter>
		</Function>
		<Function Name="gpu_set_tex_mip_bias" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the mipmap bias value, where a value of 0 equals no bias, 1 equals the first mipmap, 2 equals the second mipmap etc... This controls the rate at which the mip map is swapped and will generally make rendered textures blurrier the higher the value and the greater the &quot;distance&quot; being viewed. Note that this function can take negative values too, in which case rendered textures will be sharper over a greater distance the lower the value.</Description>
			<Parameter Name="bias" Type="Real" Optional="false">The mipmap bias value to use (default: 0)</Parameter>
		</Function>
		<Function Name="gpu_set_tex_mip_bias_ext" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the mipmap bias value for a given shader sampler. You supply the index value for the shader sampler (as returned by the function shader_get_sampler_index(), and then the bias value, where 0 is for no bias, 1 equals the first mipmap, 2 equals the second mipmap etc... This controls the rate at which the mip map is swapped and will generally make the shader textures blurrier the higher the value and the greater the &quot;distance&quot; being viewed. Note that this function can also take negative values too, in which case shader textures will be sharper over a greater distance the lower the value.</Description>
			<Parameter Name="sampler_index" Type="Id.Uniform" Optional="false">The index of the shader sampler to get</Parameter>
			<Parameter Name="bias" Type="Real" Optional="false">The mipmap bias value to use (default: 0)</Parameter>
		</Function>
		<Function Name="gpu_set_tex_mip_enable" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can change whether mipmapping is switched off, switched on for everything, or switched on only for texture groups selected in the Texture Group Manager. The function requires one of the constants listed below.</Description>
			<Parameter Name="setting" Type="Real" Optional="false">The mipmap setting (a constant, default: mip_markedonly)</Parameter>
		</Function>
		<Function Name="gpu_set_tex_mip_enable_ext" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set whether mipmapping is switched off, switched on for everything or switched on only for texture groups selected in the Texture Group Manager on a shader sampler. You supply the index value for the shader sampler (as returned by the function shader_get_sampler_index(), and then one of the constants listed below.</Description>
			<Parameter Name="sampler_index" Type="Id.Uniform" Optional="false">The index of the shader sampler to get</Parameter>
			<Parameter Name="setting" Type="Real" Optional="false">The mipmap setting (a constant, default: mip_markedonly)</Parameter>
		</Function>
		<Function Name="gpu_set_tex_mip_filter" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the current mip filter mode to one of the three types supported. You give the constant that refers to the mip filtering mode that you require, where you can choose between point filtering (default setting, meaning no filtering), linear filtering (this is also known as trilinear filtering) or aniostropic filtering (see the constants table below).</Description>
			<Parameter Name="filter" Type="String" Optional="false">The mip filter mode to use (a constant, default: tf_point).</Parameter>
		</Function>
		<Function Name="gpu_set_tex_mip_filter_ext" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the mip filter mode for a given shader sampler. You supply the index value for the shader sampler (as returned by the function shader_get_sampler_index(), and then one of the mode value constants listed below.</Description>
			<Parameter Name="sampler_index" Type="Id.Uniform" Optional="false">The index of the shader sampler to get.</Parameter>
			<Parameter Name="filter" Type="String" Optional="false">The mip filter mode to use (a constant, default: tf_point).</Parameter>
		</Function>
		<Function Name="effect_clear" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This will clear all particles that are currently visible in the room which have been made using either effect_create_above() or effect_create_below().</Description>
		</Function>
		<Function Name="effect_create_above" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can create a simple effect above all instances of your room (it is actually created at a depth of -100000). If the effect is anything other ef_rain or ef_snow then you can define an x/y position to create the effect, and the size can be a value of 0, 1, or 2, where 0 is small, 1 is medium and 2 is large.</Description>
			<Parameter Name="kind" Type="Constant.EffectType" Optional="false">The kind of effect (use one of the constants listed above).</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x positioning of the effect if relevant.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y positioning of the effect if relevant.</Parameter>
			<Parameter Name="size" Type="Real" Optional="false">The size of the effect.</Parameter>
			<Parameter Name="colour" Type="Constant.Color" Optional="false">The colour of the effect.</Parameter>
		</Function>
		<Function Name="effect_create_below" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can create a simple effect beneath all instances of your room (it is actually created at a depth of 100000). If the effect is anything other ef_rain or ef_snow then you can define an x/y position to create the effect, and the size can be a value of 0, 1, or 2, where 0 is small, 1 is medium and 2 is large.</Description>
			<Parameter Name="kind" Type="Constant.EffectType" Optional="false">The kind of effect (use one of the constants listed above).</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x positioning of the effect if relevant.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y positioning of the effect if relevant.</Parameter>
			<Parameter Name="size" Type="Real" Optional="false">The size of the effect.</Parameter>
			<Parameter Name="colour" Type="Constant.Color" Optional="false">The colour of the effect.</Parameter>
		</Function>
		<Function Name="part_emitter_burst" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function allows you to set an emitter to burst a specific type of particle and is typically used in alarms and destroy events as it is a one off code that creates the number of particles specified all at once following the distribution, shape and position set by the function part_emitter_region(). Should you need the particles to appear every step, you should be using the function part_emitter_stream() rather than calling this function every step.</Description>
			<Parameter Name="ps" Type="Id.ParticleSystem" Optional="false">The particle system that the emitter is in.</Parameter>
			<Parameter Name="ind" Type="Id.ParticleEmitter" Optional="false">The index of the emitter to burst from.</Parameter>
			<Parameter Name="parttype" Type="Id.ParticleType" Optional="false">The index (type) of the particles to be created.</Parameter>
			<Parameter Name="number" Type="Real" Optional="false">The number of particles to create.</Parameter>
		</Function>
		<Function Name="part_emitter_clear" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can clear the given emitter from the specified particle system back to its default state. This will also stop any particles that are being streamed from the emitter at the time, and if you wish to use the emitter again you will need to set the region position and particle type using the part_emitter_region() function.</Description>
			<Parameter Name="ps" Type="Id.ParticleSystem" Optional="false">The particle system that the emitter is in.</Parameter>
			<Parameter Name="ind" Type="Id.ParticleEmitter" Optional="false">The index of the emitter to clear.</Parameter>
		</Function>
		<Function Name="part_emitter_create" Deprecated="false" ReturnType="Id.ParticleEmitter" Pure="true">
			<Description>This function must be used to create a new emitter and assign it to a given particle system. The function will return the index value for the new emitter which must be stored in a variable and used in all further functions that reference the emitter, and the emitter itself must be destroyed when no longer being used to prevent memory leaks (this can be achieved using the specific emitter destroy functions or by destroying the whole particle system that the emitter belongs to).</Description>
			<Parameter Name="ps" Type="Id.ParticleSystem" Optional="false">The particle system to create the emitter in.</Parameter>
		</Function>
		<Function Name="part_emitter_destroy" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will remove the specified emitter from the given system and clear it from memory (this will also stop any particles from being produced by the given emitter, but it does NOT remove them from the room). This function should always be called when the given emitter is no longer needed for the system to prevent memory leaks and errors.</Description>
			<Parameter Name="ps" Type="Id.ParticleSystem" Optional="false">The particle system to destroy the emitter from.</Parameter>
			<Parameter Name="ind" Type="Id.ParticleEmitter" Optional="false">The index of the emitter to destroy.</Parameter>
		</Function>
		<Function Name="part_emitter_destroy_all" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will remove all defined emitters from the given system and clear them from memory (this will also stop any particles from being produced by the given emitter, but it does NOT remove them from the room). This function should always be called when the emitters are no longer needed for the system to prevent memory leaks and errors.</Description>
			<Parameter Name="ps" Type="Id.ParticleSystem" Optional="false">The particle system to destroy all emitters from.</Parameter>
		</Function>
		<Function Name="part_emitter_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check to see if the given particle emitter indexed exists in the given system or not. Note that if the variable being checked is an uninitialised variable (that a particle emitterwould otherwise have its index assigned to) this will throw an error.</Description>
			<Parameter Name="ps" Type="Id.ParticleSystem" Optional="false">The particle system to check for an emitter.</Parameter>
			<Parameter Name="ind" Type="Id.ParticleEmitter" Optional="false">The index of the emitter to search for.</Parameter>
		</Function>
		<Function Name="part_emitter_region" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function is used to set their position of a particle emitter within the current room. You specify the bounding box of the area within the function and then use any of a series of constants to define the final emitter shape within this bounding box as well as the distribution of particles within the shape. The available constants for distribution shapes are listed below:</Description>
			<Parameter Name="ps" Type="Id.ParticleSystem" Optional="false">The particle system that the emitter is in.</Parameter>
			<Parameter Name="ind" Type="Id.ParticleEmitter" Optional="false">The index of the emitter to set.</Parameter>
			<Parameter Name="xmin" Type="Real" Optional="false">The x coordinate of the left side of the region.</Parameter>
			<Parameter Name="xmax" Type="Real" Optional="false">The x coordinate of the right side.</Parameter>
			<Parameter Name="ymin" Type="Real" Optional="false">The y coordinate of the top of the region.</Parameter>
			<Parameter Name="ymax" Type="Real" Optional="false">The y coordinate of the bottom of the region.</Parameter>
			<Parameter Name="shape" Type="Constant.ParticleRegionShape" Optional="false">The shape of the region.</Parameter>
			<Parameter Name="distribution" Type="Constant.ParticleDistribution" Optional="false">The distribution style of the particles.</Parameter>
		</Function>
		<Function Name="part_emitter_stream" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function allows you to set an emitter to stream a specific type of particle and is typically used the create event as it is a one off code that sets the emitter to generate the number of particles specified every step of the game there-after. The particles are emitted following the distribution, shape and position set by the function part_emitter_region(). You can set the number of particles being streamed to zero and call this function again to &quot;switch off&quot; the particle streaming, and the function will also accept negative numbers for the amount, in which case the emitter will produce particles based on random chance. For example, if you have the particle number set to -5, there is a 1:5 chance that a particle will be produced every step. Should you need the particles to appear all at once rather than every step, you should be using the function part_emitter_burst().</Description>
			<Parameter Name="ps" Type="Id.ParticleSystem" Optional="false">The particle system that the emitter is in.</Parameter>
			<Parameter Name="ind" Type="Id.ParticleEmitter" Optional="false">The index of the emitter to burst from.</Parameter>
			<Parameter Name="parttype" Type="Id.ParticleType" Optional="false">The index (type) of the particles to be created.</Parameter>
			<Parameter Name="number" Type="Real" Optional="false">The number of particles to create per step.</Parameter>
		</Function>
		<Function Name="part_particles_clear" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can clear all the particles currently created by the system from the room. It does not reset or remove the particle types themselves, just their visual representation, and if you have any object streaming particles from an emitter, these particles disappear but will begin to appear again the next step after calling this code.</Description>
			<Parameter Name="ind" Type="Id.ParticleSystem" Optional="false">The index of the particle system.</Parameter>
		</Function>
		<Function Name="part_particles_count" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can check to see if a particle system currently has any particles created in the room, and it will return the number of them too.</Description>
			<Parameter Name="ind" Type="Id.ParticleSystem" Optional="false">The index of the particle system.</Parameter>
		</Function>
		<Function Name="part_particles_create" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function is ideal for those effects that do not require any of the functionality offered by particle emitters (for example, to create smoke from a missile, or a simple explosion effect) as it permits you to quickly and easily create particles at any position in the game room. Note that you must have created the particle system and the particle type previously for this function to be used.</Description>
			<Parameter Name="ind" Type="Id.ParticleSystem" Optional="false">The index of the particle system.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of where to create the particles.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of where to create the particles.</Parameter>
			<Parameter Name="parttype" Type="Id.ParticleType" Optional="false">The index (type) of the particles to be created.</Parameter>
			<Parameter Name="number" Type="Real" Optional="false">The number of particles to create.</Parameter>
		</Function>
		<Function Name="part_particles_create_colour" Deprecated="false" ReturnType="Undefined" Locale="GB" Pure="true">
			<Description>This function is ideal for those effects that do not require any of the functionality offered by particle emitters (for example, to create smoke from a missile, or a simple explosion effect) as it permits you to quickly and easily create particles at any position in the game room. You can also colour the particles &quot;on the fly&quot; as they are created with this function, and this colour will over-ride the predefined colour of the particle, but it does not blend this colour over the particles lifetime. Note that you must have created the particle system and the particle type previously for this function to be used.</Description>
			<Parameter Name="ind" Type="Id.ParticleSystem" Optional="false">The index of the particle system.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of where to create the particles.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of where to create the particles.</Parameter>
			<Parameter Name="parttype" Type="Id.ParticleType" Optional="false">The index (type) of the particles to be created.</Parameter>
			<Parameter Name="colour" Type="Constant.Color" Optional="false">The colour blending for the particles.</Parameter>
			<Parameter Name="number" Type="Real" Optional="false">The number of particles to create.</Parameter>
		</Function>
		<Function Name="part_system_automatic_draw" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to switch off the drawing of a particle system so that any updates done to the system (automatic or otherwise) will not be seen. This is a purely visual option and when set to false you will not be able to see the particles as they are not drawn, but they still exists and are changing position, colour etc... as they would normally. When automatic drawing is off, you can explicitly order GameMaker to draw the current state of the particle system using the function part_system_drawit(), and if you set this function to true again you can switch automatic drawing back on.</Description>
			<Parameter Name="ind" Type="Id.ParticleSystem" Optional="false">The index of the particle system to change.</Parameter>
			<Parameter Name="automatic" Type="Bool" Optional="false">Whether automatic drawing is on (true) or not (false).</Parameter>
		</Function>
		<Function Name="part_system_automatic_update" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function controls whether GameMaker should update the particle system automatically or not, and normally you would not need to use this function as the default value of true (automatic update is on) is what you wish to happen. However, for special effects or for pausing the game, you can set this to false and it will prevent any updates being carried out on the given particle system unless explicitly commanded by the use of the function part_system_update() or you use this function again to turn automatic updates on. No updating means that particles created in this system will no longer change position, colour or any other parameter and that emitters will cease to work too, &quot;freezing&quot; the system at the exact point in which the automatic update was set to false.</Description>
			<Parameter Name="ind" Type="Id.ParticleSystem" Optional="false">The index of the particle system to change.</Parameter>
			<Parameter Name="automatic" Type="Bool" Optional="false">Whether automatic updating is on (true) or not (false).</Parameter>
		</Function>
		<Function Name="part_system_clear" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can clear the indexed system to its default state, removing all emitters and resetting the depth and position (if they had been changed). Be careful using this function as if you have any instance setting or bursting or any other action using an emitter associated with this system, you will get an error unless you are using the part_emitter_exists() function to check. There is also no need to call the part_emitter_destroy() function as this is taken care of automatically too.</Description>
			<Parameter Name="ind" Type="Id.ParticleSystem" Optional="false">The index of the particle system to clear.</Parameter>
		</Function>
		<Function Name="particle_get_info" Deprecated="false" ReturnType="Struct" Pure="true">
			<Description>This function is used to retrieve information for the given particle system. You supply a particle system index (an asset added through the Asset Browser) and the function returns a struct with the following variables:</Description>
			<Parameter Name="partsys" Type="Asset.GMParticleSystem" Optional="false">The particle system for which information should be retrieved.</Parameter>
		</Function>
		<Function Name="part_system_create" Deprecated="false" ReturnType="Id.ParticleSystem" Pure="true">
			<Description>This function is used to create a new particle system and will return a unique index number that should be stored and used in all further functions relating to that system. The system will be assigned a managed layer and will be set to have a depth of 0. Managed layers are not accessible to the user and used only for internal management when depth is used instead of layers. Normally you would use the function part_system_create_layer() instead of this one.</Description>
			<Parameter Name="partsys" Type="Asset.GMParticleSystem" Optional="true">A particle system resource to create an instance of.</Parameter>
		</Function>
		<Function Name="part_system_create_layer" Deprecated="false" ReturnType="Id.ParticleSystem" Pure="true">
			<Description>This function will create a new particle system on a given layer. You give the unique layer ID as returned by the function layer_create() or the name of the layer to use as a string - for example &quot;instance_layer&quot; - and then flag the system as being persistent or not. If the system is not flagged as persistent then it will be automatically destroyed at the end of the room it was created in (this is the same as if you had called the function part_system_destroy() and will also destroy any emitters associated with the system). However, when flagged as persistent, the system will be carried to the next room when the room is changed, and if the following room does not have a layer with the same name or depth as the one assigned, then a new layer will be created for the system that is persisting across the rooms, and it will be named the same as original layer. When changing rooms, if there is another layer in the following rooms with the same name, then the persisted instance will be assigned to the layer with the that name regardless of the depth of the layer. Finally, if a persisted system moves to a room with a layer at the same depth as the layer the system was created on, it will not be assigned to this layer, but instead a new layer will be created at the same depth (with the same name as the original layer).</Description>
			<Parameter Name="layer" Type="Any" Optional="false">The layer ID value or string to assign the particle system to (can be any layer type)</Parameter>
			<Parameter Name="persistent" Type="Bool" Optional="false">Flag the particle system as persistent (set to true) or not (set to false)</Parameter>
			<Parameter Name="partsys" Type="Asset.GMParticleSystem" Optional="true">A particle system resource to create an instance of.</Parameter>
		</Function>
		<Function Name="part_system_depth" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the draw depth for the particle system, much the same as you can set the render depth of different layers within the room, where a low draw depth means that it will appear on top of all things drawn with a higher depth, and a high draw depth placing it below everything with a lower draw depth.</Description>
			<Parameter Name="ind" Type="Id.ParticleSystem" Optional="false">The index of the particle system to change.</Parameter>
			<Parameter Name="depth" Type="Real" Optional="false">The depth at which to set the particle system.</Parameter>
		</Function>
		<Function Name="part_system_destroy" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can destroy a given particles system and remove it from memory. This should always be called when the system is no longer needed, like at the end of a room, or in the destroy event of an instance, otherwise you could end up with particles appearing in later rooms and no way to remove them as well as a memory leak which will eventually crash your game.</Description>
			<Parameter Name="ind" Type="Id.ParticleSystem" Optional="false">The index of the particle system to destroy.</Parameter>
		</Function>
		<Function Name="part_system_update" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can force a particle system to draw all the current particles on the screen. If part_system_automatic_draw() is switched off then this function will show the particles when used in the draw event of an instance, or it can be used when the drawing target is set to a surface (using surface_set_target()) to draw the particles in the system to that surface.</Description>
			<Parameter Name="ind" Type="Id.ParticleSystem" Optional="false">The index of the particle system to update.</Parameter>
		</Function>
		<Function Name="part_system_draw_order" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can set the way in which particles are drawn when created on the screen. The default system uses an old &gt; new look (the function is set to true), where old particles are drawn at a higher depth than newer ones and so appear &quot;beneath&quot; them new particles, but by setting this function to false you can reverse this order and have the new particles drawn higher and so appear &quot;beneath&quot; the older ones. The images below illustrate this, with the image on the left being the default value of true and the image on the right being false:</Description>
			<Parameter Name="ind" Type="Id.ParticleSystem" Optional="false">The index of the particle system to change.</Parameter>
			<Parameter Name="oldtonew" Type="Bool" Optional="false">Whether old particles should be drawn behind newer ones (true) or vice versa (false).</Parameter>
		</Function>
		<Function Name="part_system_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check to see if the given particle system indexed exists in the game or not. Note that if the variable being checked is an uninitialised variable (that a particle system would otherwise have its index assigned to) this will throw an error.</Description>
			<Parameter Name="ind" Type="Id.ParticleSystem" Optional="false">The index of the particle system to check for.</Parameter>
		</Function>
		<Function Name="part_system_get_layer" Deprecated="false" ReturnType="Id.Layer" Pure="true">
			<Description>This function can be used to retrieve the unique layer ID value for the given particle system. You supply the particle system ID value (as returned by the function part_system_create_layer()) and the function will return the ID value of the layer.</Description>
			<Parameter Name="ind" Type="Id.ParticleSystem" Optional="false">The particle system ID value to get the layer ID of</Parameter>
		</Function>
		<Function Name="part_system_layer" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to switch a particle system from its current layer to a new one. You supply the particle system ID value (as returned by the function part_system_create_layer()) and then the unique layer ID (as returned by the function layer_create() or the name of the layer to use as a string - for example &quot;instance_layer&quot; - as defined in the room editor), and the system will be moved to the new layer.</Description>
			<Parameter Name="ps" Type="Id.ParticleSystem" Optional="false">The particle system ID</Parameter>
			<Parameter Name="layer" Type="Id.Layer" Optional="false">The new layer ID</Parameter>
		</Function>
		<Function Name="part_system_position" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the base position for the particle system relative to the (0,0) position of the room, meaning that all further particle functions relating to this system will now be drawn relative to the new position. By default this position is always (0,0), but in some very special circumstances you may wish to change this to something else.</Description>
			<Parameter Name="ind" Type="Id.ParticleSystem" Optional="false">The index of the particle system to change.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The new x coordinate of the particle system.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The new y coordinate of the particle system.</Parameter>
		</Function>
		<Function Name="part_type_alpha1" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function is used to set a particle type to have a single alpha value (transparency) for the total duration of the lifetime of each individual particle, and this can be from 0 (transparent) to 1 (opaque).</Description>
			<Parameter Name="ind" Type="Id.ParticleType" Optional="false">The index of the particle type to change.</Parameter>
			<Parameter Name="alpha1" Type="Real" Optional="false">The alpha of the particle.</Parameter>
		</Function>
		<Function Name="part_type_alpha2" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set an alpha value (transparency) gradient for each particle created of the given type. The first alpha is that which all particles will start with, and the second alpha is the one on with which the particle will end with, and a smooth gradient change will occur to the alpha over the particles lifetime from one to the other. This can be from 0 (transparent) to 1 (opaque).</Description>
			<Parameter Name="ind" Type="Id.ParticleType" Optional="false">The index of the particle type to change.</Parameter>
			<Parameter Name="alpha1" Type="Real" Optional="false">The start alpha of the particle.</Parameter>
			<Parameter Name="alpha2" Type="Real" Optional="false">The end alpha of the particle.</Parameter>
		</Function>
		<Function Name="part_type_alpha3" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set a three alpha (transparency) value gradient for each particle created of the given type. The first alpha is that which all particles will start with, and the second alpha is the one that will be blended to half way through its lifetime and the third alpha is the one with which the particle will end with. A smooth gradient change will occur through the alphas over the particles lifetime from one to the other.</Description>
			<Parameter Name="ind" Type="Id.ParticleType" Optional="false">The index of the particle type to change.</Parameter>
			<Parameter Name="alpha1" Type="Real" Optional="false">The starting alpha of the particle.</Parameter>
			<Parameter Name="alpha2" Type="Real" Optional="false">The halfway point alpha of the particle.</Parameter>
			<Parameter Name="alpha3" Type="Real" Optional="false">The ending alpha of the particle.</Parameter>
		</Function>
		<Function Name="part_type_blend" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can make your particles be drawn with an additive blend mode (true) or not (false). Additive blending is a special blend mode that adds the luminosity values of each particle as they overlap, so that light colours will gradually get brighter (until they appear white) as they overlap, and dark colours become more and more transparent with black being almost invisible. This function can give some beautiful particle effects but may not always be necessary. For example, a smoke trail would have additive blending off to keep the effect gray, but a flame effect would probably have it on to make the particles more translucent and brighter.</Description>
			<Parameter Name="ind" Type="Id.ParticleType" Optional="false">The index of the particle type to change.</Parameter>
			<Parameter Name="additive" Type="Bool" Optional="false">Whether the particles should be blended additively (true) or normally (false).</Parameter>
		</Function>
		<Function Name="part_type_clear" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can &quot;reset&quot; a particle, returning all the values for each of the functions relating to the particle (life, colour, alpha, orientation etc...) to their default values. Note that this function does not remove any particles currently visible in the room from the screen, for that you should be using part_particles_clear().</Description>
			<Parameter Name="ind" Type="Id.ParticleType" Optional="false">The index of the particle type to clear.</Parameter>
		</Function>
		<Function Name="part_type_colour1" Deprecated="false" ReturnType="Undefined" Locale="GB" Pure="false">
			<Description>This function is used to set a particle type to be a single colour for the total duration of the lifetime of each individual particle.</Description>
			<Parameter Name="ind" Type="Id.ParticleType" Optional="false">The index of the particle type to change.</Parameter>
			<Parameter Name="colour1" Type="Constant.Color" Optional="false">The single colour to make the particle type.</Parameter>
		</Function>
		<Function Name="part_type_colour2" Deprecated="false" ReturnType="Undefined" Locale="GB" Pure="false">
			<Description>This function can be used to set a two colour gradient for each particle created of the given type. The first colour is that which all particles will start with, and the second colour is the one on which the particle will end with, and a smooth gradient change will occur to the colour over the particles lifetime from one colour to the other.</Description>
			<Parameter Name="ind" Type="Id.ParticleType" Optional="false">The index of the particle type to change.</Parameter>
			<Parameter Name="colour1" Type="Constant.Color" Optional="false">The colour the particle will start at.</Parameter>
			<Parameter Name="colour2" Type="Constant.Color" Optional="false">The colour the particle will end at.</Parameter>
		</Function>
		<Function Name="part_type_colour3" Deprecated="false" ReturnType="Undefined" Locale="GB" Pure="false">
			<Description>This function can be used to set a three colour gradient for each particle created of the given type. The first colour is that which all particles will start with, and the second colour is the one that will be blended to half way through its lifetime and the third colour is the one with which the particle will end with. A smooth gradient change will occur through the colours over the particles lifetime from one colour to the other.</Description>
			<Parameter Name="ind" Type="Id.ParticleType" Optional="false">The index of the particle type to change.</Parameter>
			<Parameter Name="colour1" Type="Constant.Color" Optional="false">The colour the particle will start at.</Parameter>
			<Parameter Name="colour2" Type="Constant.Color" Optional="false">The colour the particle will be halfway through its lifespan.</Parameter>
			<Parameter Name="colour3" Type="Constant.Color" Optional="false">The colour the particle will end at.</Parameter>
		</Function>
		<Function Name="part_type_colour_hsv" Deprecated="false" ReturnType="Undefined" Locale="GB" Pure="false">
			<Description>With this function you can set a hue, saturation and value range for all particles of the given type. You supply a minimum value and a maximum value for each of the three components and the particles created will have a random colour based on the given range of parameters. In this way you can create particles of the same hue but different saturations, or of different hues but the same value (luminosity) etc... All values must be between 0 and 255.</Description>
			<Parameter Name="ind" Type="Id.ParticleType" Optional="false">The index of the particle type to change.</Parameter>
			<Parameter Name="hmin" Type="Real" Optional="false">The minimum the final colour&apos;s hue component can be.</Parameter>
			<Parameter Name="hmax" Type="Real" Optional="false">The maximum the final colour&apos;s hue component can be.</Parameter>
			<Parameter Name="smin" Type="Real" Optional="false">The minimum the final colour&apos;s saturation component can be.</Parameter>
			<Parameter Name="smax" Type="Real" Optional="false">The maximum the final colour&apos;s saturation component can be.</Parameter>
			<Parameter Name="vmin" Type="Real" Optional="false">The minimum the final colour&apos;s value component can be.</Parameter>
			<Parameter Name="vmax" Type="Real" Optional="false">The maximum the final colour&apos;s value component can be.</Parameter>
		</Function>
		<Function Name="part_type_colour_mix" Deprecated="false" ReturnType="Undefined" Locale="GB" Pure="false">
			<Description>With this function you can set the given particle type to be a random blend of two colours.</Description>
			<Parameter Name="ind" Type="Id.ParticleType" Optional="false">The index of the particle type to change.</Parameter>
			<Parameter Name="colour1" Type="Constant.Color" Optional="false">The first colour the blend will take from.</Parameter>
			<Parameter Name="colour2" Type="Constant.Color" Optional="false">The second colour the blend will take from.</Parameter>
		</Function>
		<Function Name="part_type_colour_rgb" Deprecated="false" ReturnType="Undefined" Locale="GB" Pure="false">
			<Description>With this function you can set the mix of red, green and blue colours for all particles created of the given type. You supply a minimum value and a maximum value for each of the three components and the particles created will have a random colour based on the given range of parameters. All values must be between 0 and 255.</Description>
			<Parameter Name="ind" Type="Id.ParticleType" Optional="false">The index of the particle type to change.</Parameter>
			<Parameter Name="rmin" Type="Real" Optional="false">The minimum the final colour&apos;s red component can be.</Parameter>
			<Parameter Name="rmax" Type="Real" Optional="false">The maximum the final colour&apos;s red component can be.</Parameter>
			<Parameter Name="gmin" Type="Real" Optional="false">The minimum the final colour&apos;s green component can be.</Parameter>
			<Parameter Name="gmax" Type="Real" Optional="false">The maximum the final colour&apos;s green component can be.</Parameter>
			<Parameter Name="bmin" Type="Real" Optional="false">The minimum the final colour&apos;s blue component can be.</Parameter>
			<Parameter Name="bmax" Type="Real" Optional="false">The maximum the final colour&apos;s blue component can be.</Parameter>
		</Function>
		<Function Name="part_type_create" Deprecated="false" ReturnType="Id.ParticleType" Pure="true">
			<Description>With this function you can create a new particle type and the return value should be stored in a variable for use in all subsequent particle functions.</Description>
		</Function>
		<Function Name="part_type_death" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to make your particle burst another type of particle at the end of its lifetime.</Description>
			<Parameter Name="ind" Type="Id.ParticleType" Optional="false">The index of the particle type to change.</Parameter>
			<Parameter Name="death_number" Type="Real" Optional="false">The quantity of the new particle to create at the particle death. If a negative value, it will instead create a fraction chance one is created (eg -3 would mean that one is created every 3 or so steps).</Parameter>
			<Parameter Name="death_type" Type="Id.ParticleType" Optional="false">The index of the particle type to create.</Parameter>
		</Function>
		<Function Name="part_type_destroy" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can remove the specified particle type from the game. When you use this function, all particles of the given type will disappear from the room and the particle itself is removed form memory, so this function should be used only when you no longer need the particle.</Description>
			<Parameter Name="ind" Type="Id.ParticleType" Optional="false">The index of the particle type to destroy.</Parameter>
		</Function>
		<Function Name="part_type_direction" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function is used to determine the direction of the particle when it is created and can also be used to make the particle increase or decrease its direction over its lifetime. The minimum and maximum direction values default at 0, which means that the particle will move to the right with no variation, but these values can be changed to limit the direction of movement following the standard GameMaker directions of 0 being right, 90 being up, 180 being left and 270 being down. If you set them to the same value the particles will only move in one direction.</Description>
			<Parameter Name="ind" Type="Id.ParticleType" Optional="false">The index of the particle type to change.</Parameter>
			<Parameter Name="dir_min" Type="Real" Optional="false">The minimum direction the particle can start at.</Parameter>
			<Parameter Name="dir_max" Type="Real" Optional="false">The maximum direction the particle can start at.</Parameter>
			<Parameter Name="dir_incr" Type="Real" Optional="false">How much the particle direction should increase or decrease per step.</Parameter>
			<Parameter Name="dir_wiggle" Type="Real" Optional="false">How much should randomly be added or subtracted from the particle&apos;s direction per step.</Parameter>
		</Function>
		<Function Name="part_type_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check to see if the given particle type indexed exists in the game or not. Note that if the variable being checked is an uninitialised variable (that a particle type would otherwise have its index assigned to) this will throw an error.</Description>
			<Parameter Name="ind" Type="Id.ParticleType" Optional="false">The index of the particle type to check for.</Parameter>
		</Function>
		<Function Name="part_type_gravity" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will set the gravity that is to affect each particle of the given type that is created. The gravity strength value is added to the particle speed every step and is usually a small value like 0.5, while the direction is the direction of the gravity &quot;pull&quot; and follows the standard GameMaker directions of 0° being right, 90° being up, 180° being left and 270° being down.</Description>
			<Parameter Name="ind" Type="Id.ParticleType" Optional="false">The index of the particle type to change.</Parameter>
			<Parameter Name="grav_amount" Type="Real" Optional="false">Strength of the gravity.</Parameter>
			<Parameter Name="grav_direction" Type="Real" Optional="false">The direction of the gravity.</Parameter>
		</Function>
		<Function Name="part_type_life" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This is the function that governs how long each individual particle of the indicated type remains on the screen. As with other particle functions, you provide a minimum and a maximum value (in steps)and each particle lifespan will be a random number of steps from within the specified range. To have all particles with the same lifetime, set the two values to be the same.</Description>
			<Parameter Name="ind" Type="Id.ParticleType" Optional="false">The index of the particle type to change.</Parameter>
			<Parameter Name="life_min" Type="Real" Optional="false">The minimum lifespan of the particles.</Parameter>
			<Parameter Name="life_max" Type="Real" Optional="false">The maximum lifespan of the particles.</Parameter>
		</Function>
		<Function Name="part_type_orientation" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function is used to determine the orientation of the particle sprite when it is created and can also be used to make the particle orientation increase or decrease over its lifetime. The minimum and maximum orientation values default at 0 but these values can be changed to randomise the orientation following the standard GameMaker directions of 0 degrees being right, 90 degrees being up, 180 degrees being left and 270 degrees being down. If you set them to the same value the particles will all be created with the same orientation.</Description>
			<Parameter Name="ind" Type="Id.ParticleType" Optional="false">The index of the particle type to change.</Parameter>
			<Parameter Name="ang_min" Type="Real" Optional="false">The minimum starting angle of the particles.</Parameter>
			<Parameter Name="ang_max" Type="Real" Optional="false">The maximum starting angle of the particles.</Parameter>
			<Parameter Name="ang_incr" Type="Real" Optional="false">The increase (or decrease if set negative) of the angle in degrees per step.</Parameter>
			<Parameter Name="ang_wiggle" Type="Real" Optional="false">The amount the angle wiggles clockwise/counterclockwise per step.</Parameter>
			<Parameter Name="ang_relative" Type="Bool" Optional="false">Whether to set its angle relative to the direction of the particle&apos;s motion (true) or not (false).</Parameter>
		</Function>
		<Function Name="part_type_scale" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will set the horizontal and vertical scale of the particle before any other size changes are made. This function works on the ratio of the sprite size, so a value of 1 (the default value) is a 1:1 ratio, meaning that 0.5 would be half and 2 double.</Description>
			<Parameter Name="ind" Type="Id.ParticleType" Optional="false">The index of the particle type to change.</Parameter>
			<Parameter Name="xscale" Type="Real" Optional="false">The horizontal scaling of the base particle.</Parameter>
			<Parameter Name="yscale" Type="Real" Optional="false">The vertical scaling of the base particle.</Parameter>
		</Function>
		<Function Name="part_type_shape" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the sprite shape to use for the particle type, with the following constants being acceptable:</Description>
			<Parameter Name="ind" Type="Id.ParticleType" Optional="false">The index of the particle type to set.</Parameter>
			<Parameter Name="shape" Type="Constant.ParticleShape" Optional="false">The shape to choose.</Parameter>
		</Function>
		<Function Name="part_type_size" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function is used to determine the size of the particle when it is created and can also be used to make the particle increase or decrease in size over its lifetime. The minimum and maximum size values default at 1 (meaning that the size is the same ratio as the base particle after the part_type_scale() scale has been set) and if they are set to the same value, the initial size for all particles will be the same, but if set to different values, each particle will start with a random size from within the range, for example if you have a minimum of 0.5 and a maximum of 2, all particles will be created with a size between half and double the base scale.</Description>
			<Parameter Name="ind" Type="Id.ParticleType" Optional="false">The index of the particle type to change.</Parameter>
			<Parameter Name="size_min" Type="Real" Optional="false">The minimum size the particle can start at.</Parameter>
			<Parameter Name="size_max" Type="Real" Optional="false">The maximum size the particle can start at.</Parameter>
			<Parameter Name="size_incr" Type="Real" Optional="false">How much the particle should increase or decrease per step.</Parameter>
			<Parameter Name="size_wiggle" Type="Real" Optional="false">How much should randomly be added or subtracted from the particles size per step.</Parameter>
		</Function>
		<Function Name="part_type_speed" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function is used to set the movement speed of the particle when it is created and can also be used to make the particle increase or decrease its speed over its lifetime. The minimum and maximum speed values default at 1, which means that the particle will move 1 pixel each step, and if they are set to the same value, the initial speed for all particles will be the same, but if set to different values, each particle will start with a random speed from within the given range. For example if you have a minimum of 3 and a maximum of 6, all particles will be created with a speed between three and six pixels per step.</Description>
			<Parameter Name="ind" Type="Id.ParticleType" Optional="false">The index of the particle type to change.</Parameter>
			<Parameter Name="speed_min" Type="Real" Optional="false">The minimum speed the particle can start at.</Parameter>
			<Parameter Name="speed_max" Type="Real" Optional="false">The maximum speed the particle can start at.</Parameter>
			<Parameter Name="speed_incr" Type="Real" Optional="false">How much the particle speed should increase or decrease per step.</Parameter>
			<Parameter Name="speed_wiggle" Type="Real" Optional="false">How much should randomly be added or subtracted from the particle&apos;s speed per step.</Parameter>
		</Function>
		<Function Name="part_type_sprite" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set a particle type to use a custom sprite from the game assets. You can select the sprite and then tell GameMaker to use the sprite and animate it or not, and if you choose animated, then you can also choose to have the sub-images changed at an interval such that the animation will begin and end at the beginning and end of the lifetime of each particle created (so that if you have a lifetime set to a 15 step minimum and a 30 step maximum, no matter what value the lifetime has the animation will be made to fit, with it running faster for the shorter lifetimes and slower for the longer). You can also select to choose a random sub-image so that if the sprite is not animated, a different image will be chosen at random to create the sprite, or if the particle is animated it will start the animation at a random point.</Description>
			<Parameter Name="ind" Type="Id.ParticleType" Optional="false">The index of the particle type to change.</Parameter>
			<Parameter Name="sprite" Type="Asset.GMSprite" Optional="false">The index of the sprite to set the particle type to.</Parameter>
			<Parameter Name="animate" Type="Bool" Optional="false">Whether to follow the sprite&apos;s animation normally (true) or not (false).</Parameter>
			<Parameter Name="stretch" Type="Bool" Optional="false">Whether to stretch the sprite&apos;s animation to match the particle lifespan (true) or not (false).</Parameter>
			<Parameter Name="random" Type="Bool" Optional="false">Whether to choose a random sub-image (true) or not (false).</Parameter>
		</Function>
		<Function Name="part_type_step" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to make your particle type stream another type each step until the end of its lifetime. You can set a negative value for the step number and a particle will be emitted at a random interval based on that, so that, for example, a value of -3 will have a 1:3 chance of emitting a particle each step.</Description>
			<Parameter Name="ind" Type="Id.ParticleType" Optional="false">The index of the particle type to change.</Parameter>
			<Parameter Name="step_number" Type="Real" Optional="false">The quantity of the new particle to create per step.</Parameter>
			<Parameter Name="step_type" Type="Id.ParticleType" Optional="false">The index of the particle type to create.</Parameter>
		</Function>
		<Function Name="draw_primitive_begin" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function must be called before you can define any primitives. There are 6 types of primitives you can define with the following constants:</Description>
			<Parameter Name="kind" Type="Constant.PrimitiveType" Optional="false">The kind of primitive you are going to draw.</Parameter>
		</Function>
		<Function Name="draw_primitive_begin_texture" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function must be called before you define the vertices of a textured primitive. You must give the kind of primitive to use (see draw_primitive_begin() for more information) and the id of a texture to use, which can be a sprite or background image asset. This asset id can be gotten from the functions sprite_get_texture(), for example (use -1 for no texture).</Description>
			<Parameter Name="kind" Type="Constant.PrimitiveType" Optional="false">The kind of primitive you are going to draw.</Parameter>
			<Parameter Name="tex" Type="Pointer.Texture,Real" Optional="false">The texture to use with the primitive.</Parameter>
		</Function>
		<Function Name="draw_primitive_end" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function must be called when you have finished defining the points of your primitive. If you do not call this function, nothing will be drawn as this effectively tells GameMaker that you have finished and that it can now draw the defined primitive.</Description>
		</Function>
		<Function Name="draw_vertex" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function defines the position of a vertex for a primitive. The final look of the primitive will depend on the primitive type chosen to draw and the order with which you add the vertexes to it. See draw_primitive_begin() for more information. To end and draw the primitive you must call draw_primitive_end().</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of the vertex.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of the vertex.</Parameter>
		</Function>
		<Function Name="draw_vertex_colour" Deprecated="false" ReturnType="Undefined" Locale="GB" Pure="true">
			<Description>This function defines the position of a vertex for a primitive, with its own colour and alpha setting. The final look of the primitive will depend on the primitive type chosen to draw and the order with which you add the vertexes to it (see draw_primitive_begin() for more information) and the vertexes with different colours and alphas will blend smoothly from one to the other. To end and draw the primitive you must call draw_primitive_end().</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of the vertex.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of the vertex.</Parameter>
			<Parameter Name="col" Type="Constant.Color" Optional="false">The colour to draw this vertex with.</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha to draw this vertex with (0-1).</Parameter>
		</Function>
		<Function Name="draw_vertex_texture" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function defines the position of a textured vertex for a primitive. The final look of the primitive will depend on the primitive type chosen to draw (See draw_primitive_begin() for more information), the order with which you add the vertexes to it and the position of the start point you set for the texture. To end and draw the primitive you must call draw_primitive_end().</Description>
			<Parameter Name="x" Type="Real" Optional="false" />
			<Parameter Name="y" Type="Real" Optional="false" />
			<Parameter Name="xtex" Type="Real" Optional="false" />
			<Parameter Name="ytex" Type="Real" Optional="false" />
		</Function>
		<Function Name="draw_vertex_texture_colour" Deprecated="false" ReturnType="Undefined" Locale="GB" Pure="true">
			<Description>This function defines the position of a textured vertex for a primitive. The final look of the primitive will depend on the primitive type chosen to draw (See draw_primitive_begin() for more information), the order with which you add the vertices to it, the position of the start and end points that you give for the texture sample and the colour and alpha values that you have set. To maintain the texture appearance while changing only the alpha, a value of -1 (or c_white) may be used for the colour argument. To end and draw the primitive you must call draw_primitive_end().</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of the vertex.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of the vertex.</Parameter>
			<Parameter Name="xtex" Type="Real" Optional="false">The x coordinate within the texture.</Parameter>
			<Parameter Name="ytex" Type="Real" Optional="false">The y coordinate within the texture.</Parameter>
			<Parameter Name="col" Type="Constant.Color" Optional="false">The colour to blend with the texture at this vertex (-1 or c_white for no blending).</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha to draw this vertex with (0-1).</Parameter>
		</Function>
		<Function Name="vertex_argb" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will set the ARGB values for the vertex currently being defined for the custom primitive. You supply the buffer to write the data into as well as the red, green, blue and alpha values that you wish to use as a single 32-bit unsigned integer - alpha sample in the highest 8 bits, followed by the red sample, green sample and finally the blue sample in the lowest 8 bits. You can use hex notation ($AARRGGBB) a real number or use any of the make_colour_*() functions to define the colour value.</Description>
			<Parameter Name="buffer" Type="Id.VertexBuffer" Optional="false">The buffer to write the information to.</Parameter>
			<Parameter Name="argb" Type="Real" Optional="false">The ARGB value to set.</Parameter>
		</Function>
		<Function Name="vertex_begin" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you begin the definition of a custom primitive. You assign a buffer to write the primitive to, and the vertex format to use (previously defined using the vertex format functions). You would then define the necessary points for each vertex of the primitive before calling vertex_end() to finalise the primitive creation.</Description>
			<Parameter Name="buffer" Type="Id.VertexBuffer" Optional="false">The buffer to be written to.</Parameter>
			<Parameter Name="format" Type="Id.VertexFormat" Optional="false">The vertex format to use.</Parameter>
		</Function>
		<Function Name="vertex_colour" Deprecated="false" ReturnType="Undefined" Locale="GB" Pure="false">
			<Description>If your defined vertex format takes a colour value you can use this function to add that data to the vertex being defined for the current primitive. The function needs a buffer to store the data in and will take either a colour constant, or a hex value (using the standard GameMaker format of BGR, eg: $FF0000 for blue) as well as an alpha value from 0 (transparent) to 1 (fully opaque).</Description>
			<Parameter Name="buffer" Type="Id.VertexBuffer" Optional="false">The buffer to write the information to.</Parameter>
			<Parameter Name="colour" Type="Constant.Color" Optional="false">The colour for this vertex (can be a constant or a hex value).</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha value for the vertex (from 0 to 1).</Parameter>
		</Function>
		<Function Name="vertex_create_buffer" Deprecated="false" ReturnType="Id.VertexBuffer" Pure="true">
			<Description>With this function you can create a new vertex buffer. This is a special grow buffer created by GameMaker which is pre-formatted for use when building primitives (for use with shaders, for example). The function will return a &quot;Pointer&quot; (index) for the buffer which should then be used in all further calls to it.</Description>
		</Function>
		<Function Name="vertex_create_buffer_ext" Deprecated="false" ReturnType="Id.VertexBuffer" Pure="true">
			<Description>As with the function vertex_create_buffer(), this function will create a new vertex buffer. This is a special grow buffer created by GameMaker which is pre-formatted for use when building primitives for use with shaders. You can specify an initial starting size for the buffer (in bytes) and it will return a &quot;handle&quot; (index) for the buffer which should then be used in all further calls to the buffer.</Description>
			<Parameter Name="size" Type="Real" Optional="false">The initial size of the buffer (in bytes).</Parameter>
		</Function>
		<Function Name="vertex_create_buffer_from_buffer" Deprecated="false" ReturnType="Id.VertexBuffer" Pure="true">
			<Description>As with the function vertex_create_buffer(), this function will create a new vertex buffer, only now the vertex data it stores is copied from the regular buffer that is specified as the source. The buffer created is a special grow buffer which is pre-formatted with the vertex format for building primitives for use with (for example) shaders. This function requires that you supply the pointer to a previously created regular buffer, and a vertex format that should be applied to the copied data.</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The buffer to create the vertex buffer from.</Parameter>
			<Parameter Name="format" Type="Id.VertexFormat" Optional="false">The primitive vertex format to use.</Parameter>
		</Function>
		<Function Name="vertex_create_buffer_from_buffer_ext" Deprecated="false" ReturnType="Id.VertexBuffer" Pure="true">
			<Description>As with the function vertex_create_buffer(), this function will create a new vertex buffer, only now the vertex data it stores is copied from the regular buffer that is specified as the source. The buffer is pre-formatted with the vertex format for building primitives for use with (for example) shaders, and you can also supply an offset within the source buffer to copy from and the number of vertices that the final buffer should have. Note that if the number of vertices does not match those being copied you may get corrupted vertex data.</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The buffer to create the vertex buffer from.</Parameter>
			<Parameter Name="format" Type="Id.VertexFormat" Optional="false">The primitive vertex format to use.</Parameter>
			<Parameter Name="src_offset" Type="Real" Optional="false">The offset within the the source buffer to copy from.</Parameter>
			<Parameter Name="vert_num" Type="Real" Optional="false">The number of vertices the buffer should have.</Parameter>
		</Function>
		<Function Name="vertex_delete_buffer" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to remove a previously created vertex buffer (see vertex_create_buffer()) from system memory. This will also remove all vertex data for any custom primitives that it contained.</Description>
			<Parameter Name="buffer" Type="Id.VertexBuffer" Optional="false">The buffer to be removed.</Parameter>
		</Function>
		<Function Name="vertex_end" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you end the building of the custom primitive. Once you call this command the primitive can be used in the vertex_submit() function for use in a shader or you can freeze the buffer (making the vertex buffer used read-only and much faster) using vertex_freeze().</Description>
			<Parameter Name="buffer" Type="Id.VertexBuffer" Optional="false">The buffer to end writing to.</Parameter>
		</Function>
		<Function Name="vertex_float1" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will add a floating point value to the vertex data. The vertex must have been formatted correctly to accept this using the vertex_format_add_custom() function.</Description>
			<Parameter Name="buffer" Type="Id.VertexBuffer" Optional="false">The buffer to write the information to.</Parameter>
			<Parameter Name="float" Type="Real" Optional="false">The input value.</Parameter>
		</Function>
		<Function Name="vertex_float2" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will add two floating point values to the vertex data. The vertex must have been formatted correctly to accept this using the vertex_format_add_custom() function.</Description>
			<Parameter Name="buffer" Type="Id.VertexBuffer" Optional="false">The buffer to write the information to.</Parameter>
			<Parameter Name="float" Type="Real" Optional="false">The first input value.</Parameter>
			<Parameter Name="float" Type="Real" Optional="false">The second input value.</Parameter>
		</Function>
		<Function Name="vertex_float3" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will add three floating point values to the vertex data. The vertex must have been formatted correctly to accept this using the vertex_format_add_custom() function.</Description>
			<Parameter Name="buffer" Type="Id.VertexBuffer" Optional="false">The buffer to write the information to.</Parameter>
			<Parameter Name="float" Type="Real" Optional="false">The first input value.</Parameter>
			<Parameter Name="float" Type="Real" Optional="false">The second input value.</Parameter>
			<Parameter Name="float" Type="Real" Optional="false">The third input value.</Parameter>
		</Function>
		<Function Name="vertex_float4" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will add four floating point values to the vertex data. The vertex must have been formatted correctly to accept this using the vertex_format_add_custom() function.</Description>
			<Parameter Name="buffer" Type="Id.VertexBuffer" Optional="false">The buffer to write the information to.</Parameter>
			<Parameter Name="float" Type="Real" Optional="false">The first input value.</Parameter>
			<Parameter Name="float" Type="Real" Optional="false">The second input value.</Parameter>
			<Parameter Name="float" Type="Real" Optional="false">The third input value.</Parameter>
			<Parameter Name="float" Type="Real" Optional="false">The fourth input value.</Parameter>
		</Function>
		<Function Name="vertex_format_add_colour" Deprecated="false" ReturnType="Undefined" Locale="GB" Pure="false">
			<Description>Tell GameMaker to accept colour data as part of the new vertex format being created.</Description>
		</Function>
		<Function Name="vertex_format_add_custom" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function permits you to use a custom data type for specific vertex format attributes as part of the new vertex format being created. The available values to use are defined by the data type constant that you choose, listed below:</Description>
			<Parameter Name="type" Type="Constant.VertexType" Optional="false">The data type that this custom vertex data will hold (see the type constants listed below).</Parameter>
			<Parameter Name="usage" Type="Constant.VertexUsage" Optional="false">The use that the data will get(see the usage constants listed below).</Parameter>
		</Function>
		<Function Name="vertex_format_add_normal" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Tell GameMaker to accept surface normal data (nx, ny and nz) as part of the new vertex format being created.</Description>
		</Function>
		<Function Name="vertex_format_add_position" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Tell GameMaker to accept 2D positional data (x and y) as part of the new vertex format being created.</Description>
		</Function>
		<Function Name="vertex_format_add_position_3d" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Tell GameMaker to accept 3D positional data (x, y and z) as part of the new vertex format being created.</Description>
		</Function>
		<Function Name="vertex_format_add_texcoord" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>Tell GameMaker to accept texture position data (u and v) as part of the new vertex format being created.</Description>
		</Function>
		<Function Name="vertex_format_begin" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Before you can define your new vertex format you must tell GameMaker that you&apos;re doing so using this function. You must call this first, then define the format values using the appropriate functions, and finally call vertex_format_end() to finish the definition and return the new format &quot;handle&quot;.</Description>
		</Function>
		<Function Name="vertex_format_delete" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function must be called whenever you are finished using any created vector formats. You provide the format ID value (as returned by the function vector_format_end()), and this function will free the memory associated with it. Note that if you try to use this format again after calling this function, you will get an error.</Description>
			<Parameter Name="format_id" Type="Id.VertexFormat" Optional="false" />
		</Function>
		<Function Name="vertex_format_end" Deprecated="false" ReturnType="Id.VertexFormat" Pure="false">
			<Description>This function must be called after defining any new vertex format. It returns the new format &quot;handle&quot; (index) which must be used in all further vertex functions that refer to this new format.</Description>
		</Function>
		<Function Name="vertex_freeze" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to &quot;freeze&quot; a vertex buffer. this buffer becomes read-only, meaning that should you need to change it, you would have to delete the whole buffer and re-create it. A frozen buffer can be submitted to the shader faster than a normal, dynamic buffer and is recommended for those effects that require an unchanging custom primitive for the duration of a level or the game.</Description>
			<Parameter Name="buffer" Type="Id.VertexBuffer" Optional="false">The buffer to freeze.</Parameter>
		</Function>
		<Function Name="vertex_get_buffer_size" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the size of the given vertex buffer in bytes.</Description>
			<Parameter Name="buffer" Type="Id.VertexBuffer" Optional="false">The buffer to get the size of.</Parameter>
		</Function>
		<Function Name="vertex_get_number" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can find out the number of individual vertices defined in any given vertex buffer.</Description>
			<Parameter Name="buffer" Type="Id.VertexBuffer" Optional="false">The vertex buffer to check.</Parameter>
		</Function>
		<Function Name="vertex_normal" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will add surface normal data to the vertex currently being defined for the custom primitive. You supply the buffer to write the data into as well as the x, y and z component parts of the normal.</Description>
			<Parameter Name="buffer" Type="Id.VertexBuffer" Optional="false">The buffer to write the information to.</Parameter>
			<Parameter Name="nx" Type="Real" Optional="false">The x component of the surface normal.</Parameter>
			<Parameter Name="ny" Type="Real" Optional="false">The y component of the surface normal.</Parameter>
			<Parameter Name="nz" Type="Real" Optional="false">The z component of the surface normal.</Parameter>
		</Function>
		<Function Name="vertex_position" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will add 2D position data to the vertex currently being defined for the custom primitive. You supply the buffer to write the data into as well as the x and y position for drawing.</Description>
			<Parameter Name="buffer" Type="Id.VertexBuffer" Optional="false">The buffer to write the information to.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position.</Parameter>
		</Function>
		<Function Name="vertex_position_3d" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will add 3D position data to the vertex currently being defined for the custom primitive. You supply the buffer to write the data into as well as the x, y and z position for drawing.</Description>
			<Parameter Name="buffer" Type="Id.VertexBuffer" Optional="false">The buffer to write the information to.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position.</Parameter>
			<Parameter Name="z" Type="Real" Optional="false">The z position.</Parameter>
		</Function>
		<Function Name="vertex_submit" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>You can use this function to submit the contents of a vertex buffer to the graphics pipeline for use with a shader. You supply the buffer index to use, the base primitive type to use (see the constants below) and the texture that is to be used. The base primitive type is only used for assigning the order in which the vertexes that you stored in the buffer are drawn and connected, but the actual data used for each of the vertexes will be that which you defined when creating the vertex buffer.</Description>
			<Parameter Name="buffer" Type="Id.VertexBuffer" Optional="false">The buffer to use.</Parameter>
			<Parameter Name="primitive" Type="Constant.PrimitiveType" Optional="false">The primitive base type.</Parameter>
			<Parameter Name="texture" Type="Pointer.Texture,Real" Optional="false">The texture to use (or -1 for no texture).</Parameter>
		</Function>
		<Function Name="vertex_texcoord" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will set the texture coordinates to use for the vertex currently being defined for the custom primitive. You supply the buffer to write the data into as well as the UV position within the texture to use.</Description>
			<Parameter Name="buffer" Type="Id.VertexBuffer" Optional="false">The buffer to write the information to.</Parameter>
			<Parameter Name="u" Type="Real" Optional="false">The first texture coordinate to use (0 - 1).</Parameter>
			<Parameter Name="v" Type="Real" Optional="false">The second texture coordinate to use (0 - 1).</Parameter>
		</Function>
		<Function Name="vertex_ubyte4" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will add four unsigned byte values (0 - 255) to the vertex data. The vertex must have been formatted correctly to accept this using the vertex_format_add_custom() function.</Description>
			<Parameter Name="buffer" Type="Id.VertexBuffer" Optional="false">The buffer to write the information to.</Parameter>
			<Parameter Name="byte" Type="Real" Optional="false">The first input value.</Parameter>
			<Parameter Name="byte" Type="Real" Optional="false">The second input value.</Parameter>
			<Parameter Name="byte" Type="Real" Optional="false">The third input value.</Parameter>
			<Parameter Name="byte" Type="Real" Optional="false">The fourth input value.</Parameter>
		</Function>
		<Function Name="draw_enable_swf_aa" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can enable or disable anti-aliasing (AA) for SWF format vector sprites. AA simply smooths the edges of vector images to give them a nicer look. The amount of AA used will depend on the value set using the function draw_set_swf_aa_level(). By default this is disabled.</Description>
			<Parameter Name="enable" Type="Bool" Optional="false">Enable (true) or disable (false) AA for all SWF sprites.</Parameter>
		</Function>
		<Function Name="draw_get_swf_aa_level" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to get the anti-aliasing (AA) level for SWF format vector sprites. The return value will between 0 and 1 and shows how &quot;smooth&quot; the edges of these sprites will be drawn. You can set the AA level using the function draw_set_swf_aa_level().</Description>
		</Function>
		<Function Name="draw_self" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function draws the sprite assigned to the instance exactly as it would be drawn if the draw event held no code or actions, and will reflect and changes that have been made to the sprite variables in other events.</Description>
		</Function>
		<Function Name="draw_set_swf_aa_level" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set the anti-aliasing (AA) level for SWF format vector sprites. This can be a real value from 0 to 1 and will &quot;smooth&quot; the edges of these sprites. Note that to see this effect, you must first have enabled AA using the function draw_enable_swf_aa().</Description>
			<Parameter Name="aa" Type="Real" Optional="false">The anti-aliasing value to use from 0 to 1.</Parameter>
		</Function>
		<Function Name="draw_sprite" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function draws the given sprite and sub-image at a position within the game room. For the sprite you can use the instance variable sprite_index to get the current sprite that is assigned to the instance running the code, or you can use any other sprite asset. The same goes for the sub-image, as this can also be set to the instance variable image_index which will set the sub-image to that selected for the current instance sprite (note, that you can draw a different sprite and still use the sub-image value for the current instance), or you can use any other value for this to draw a specific sub-image of the chosen sprite. If the value is larger than the number of sub-images, then GameMaker will automatically loop the number to select the corresponding image (for example, if the sprite being drawn has 5 sub-images numbered 0 to 4 and we set the index value to 7, then the function will draw sub-image 3, numbered 0). Finally, the x and y position is the position within the room that the sprite will be drawn, and it is centered on the sprite x offset and y offset.</Description>
			<Parameter Name="sprite" Type="Asset.GMSprite" Optional="false">The index of the sprite to draw.</Parameter>
			<Parameter Name="subimg" Type="Real" Optional="false">The sub-image (frame) of the sprite to draw (image_index or -1 correlate to the current frame of animation in the object).</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of where to draw the sprite.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of where to draw the sprite.</Parameter>
		</Function>
		<Function Name="draw_sprite_ext" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will draw the given sprite as in the function draw_sprite() but with additional options to change the scale, blending, rotation and alpha of the sprite being drawn. Changing these values does not modify the resource in any way (only how it is drawn), and you can use any of the available sprite variables instead of direct values for all the arguments in the function. The image below illustrates how different values affect the drawing of the sprite:</Description>
			<Parameter Name="sprite" Type="Asset.GMSprite" Optional="false">The index of the sprite to draw.</Parameter>
			<Parameter Name="subimg" Type="Real" Optional="false">The subimg (frame) of the sprite to draw (image_index or -1 correlate to the current frame of animation in the object).</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of where to draw the sprite.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of where to draw the sprite.</Parameter>
			<Parameter Name="xscale" Type="Real" Optional="false">The horizontal scaling of the sprite, as a multiplier: 1 = normal scaling, 0.5 is half etc...</Parameter>
			<Parameter Name="yscale" Type="Real" Optional="false">The vertical scaling of the sprite as a multiplier: 1 = normal scaling, 0.5 is half etc...</Parameter>
			<Parameter Name="rot" Type="Real" Optional="false">The rotation of the sprite. 0=right way up, 90=rotated 90 degrees counter-clockwise etc...</Parameter>
			<Parameter Name="colour" Type="Constant.Color" Optional="false">The colour with which to blend the sprite. c_white is to display it normally.</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha of the sprite (from 0 to 1 where 0 is transparent and 1 opaque).</Parameter>
		</Function>
		<Function Name="draw_sprite_general" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function combines the function draw_sprite_ext() with the function draw_sprite_part(), adding in some additional blending options so that each corner of the final sprite part can be blended with an individual colour.</Description>
			<Parameter Name="sprite" Type="Asset.GMSprite" Optional="false">The index of the sprite to draw.</Parameter>
			<Parameter Name="subimg" Type="Real" Optional="false">The subimg (frame) of the sprite to draw (image_index or -1 correlate to the current frame of animation in the object).</Parameter>
			<Parameter Name="left" Type="Real" Optional="false">The x position on the sprite of the top left corner of the area to draw.</Parameter>
			<Parameter Name="top" Type="Real" Optional="false">The y position on the sprite of the top left corner of the area to draw.</Parameter>
			<Parameter Name="width" Type="Real" Optional="false">The width of the area to draw.</Parameter>
			<Parameter Name="height" Type="Real" Optional="false">The height of the area to draw.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of where to draw the sprite.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of where to draw the sprite.</Parameter>
			<Parameter Name="xscale" Type="Real" Optional="false">The horizontal scaling of the sprite, as a multiplier: 1 = normal scaling, 0.5 is half etc...</Parameter>
			<Parameter Name="yscale" Type="Real" Optional="false">The vertical scaling of the sprite, as a multiplier: 1 = normal scaling, 0.5 is half etc...</Parameter>
			<Parameter Name="rot" Type="Real" Optional="false">The rotation of the sprite. 0=normal, 90=turned 90 degrees counter-clockwise etc.</Parameter>
			<Parameter Name="c1" Type="Constant.Color" Optional="false">The colour with which to blend the top left area of the sprite.</Parameter>
			<Parameter Name="c2" Type="Constant.Color" Optional="false">The colour with which to blend the top right area of the sprite.</Parameter>
			<Parameter Name="c3" Type="Constant.Color" Optional="false">The colour with which to blend the bottom right area of the sprite.</Parameter>
			<Parameter Name="c4" Type="Constant.Color" Optional="false">The colour with which to blend the bottom left area of the sprite.</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha of the sprite (from 0 to 1 where 0 is transparent and 1 opaque).</Parameter>
		</Function>
		<Function Name="draw_sprite_part" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can draw part of any sprite at a given position within the room. As with draw_sprite() you can specify a sprite and a sub-image for drawing, then you must give the relative coordinates within the sprite of the area to select for drawing. This means that a left position of 0 and a top position of 0 would be the top left corner of the sprite and all further coordinates should be taken from that position. The image below shows an example of how this works:</Description>
			<Parameter Name="sprite" Type="Asset.GMSprite" Optional="false">The index of the sprite to draw.</Parameter>
			<Parameter Name="subimg" Type="Real" Optional="false">The subimg (frame) of the sprite to draw (image_index or -1 correlate to the current frame of animation in the object).</Parameter>
			<Parameter Name="left" Type="Real" Optional="false">The x position on the sprite of the top left corner of the area to draw.</Parameter>
			<Parameter Name="top" Type="Real" Optional="false">The y position on the sprite of the top left corner of the area to draw.</Parameter>
			<Parameter Name="width" Type="Real" Optional="false">The width of the area to draw.</Parameter>
			<Parameter Name="height" Type="Real" Optional="false">The height of the area to draw.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of where to draw the sprite.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of where to draw the sprite.</Parameter>
		</Function>
		<Function Name="draw_sprite_part_ext" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will draw a part of the chosen sprite at the given position following the same rules as per draw_sprite_part(), only now you can scale the part, blend a colour with it, or change its alpha when drawing it to the screen (the same as when drawing a sprite with draw_sprite_ext()). You should note that if the texture page permits automatic cropping then this function may not work as expected, since the extra &quot;empty&quot; space around the sprite will have been removed for creating the texture page. To resolve this issue, you will need to set the texture page settings (in the Texture Group Editor) to disable the Automatic Crop.</Description>
			<Parameter Name="sprite" Type="Asset.GMSprite" Optional="false">The index of the sprite to draw.</Parameter>
			<Parameter Name="subimg" Type="Real" Optional="false">The subimg (frame) of the sprite to draw (image_index or -1 correlate to the current frame of animation in the object).</Parameter>
			<Parameter Name="left" Type="Real" Optional="false">The x position on the sprite of the top left corner of the area to draw.</Parameter>
			<Parameter Name="top" Type="Real" Optional="false">The y position on the sprite of the top left corner of the area to draw.</Parameter>
			<Parameter Name="width" Type="Real" Optional="false">The width of the area to draw.</Parameter>
			<Parameter Name="height" Type="Real" Optional="false">The height of the area to draw.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of where to draw the sprite.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of where to draw the sprite.</Parameter>
			<Parameter Name="xscale" Type="Real" Optional="false">The horizontal scaling of the sprite, as a multiplier: 1 = normal scaling, 0.5 is half etc...</Parameter>
			<Parameter Name="yscale" Type="Real" Optional="false">The vertical scaling of the sprite, as a multiplier: 1 = normal scaling, 0.5 is half etc...</Parameter>
			<Parameter Name="colour" Type="Constant.Color" Optional="false">The colour with which to blend the sprite. c_white is to display it normally.</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha of the sprite (from 0 to 1 where 0 is transparent and 1 opaque).</Parameter>
		</Function>
		<Function Name="draw_sprite_pos" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can draw a sprite distorted over the area defined by the four corner coordinates. The first two arguments are the sprite to draw and the sub-image of the sprite (the same as in the function draw_sprite()) but the next ones are those that define the position of each of the four corners of the bounding box of the given sprite. These should be given in clockwise order, so the first coordinate is the top left, then the top right, then bottom right and finally the bottom left. You can also set a value for the alpha of the sprite to draw it with transparency. The image below illustrates how this function works:</Description>
			<Parameter Name="sprite" Type="Asset.GMSprite" Optional="false">The index of the sprite to draw.</Parameter>
			<Parameter Name="subimg" Type="Real" Optional="false">The subimg (frame) of the sprite to draw (image_index or -1 correlate to the current frame of animation in the object).</Parameter>
			<Parameter Name="x1" Type="Real" Optional="false">The first x coordinate.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The first y coordinate.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The second x coordinate.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The second y coordinate.</Parameter>
			<Parameter Name="x3" Type="Real" Optional="false">The third x coordinate.</Parameter>
			<Parameter Name="y3" Type="Real" Optional="false">The third y coordinate.</Parameter>
			<Parameter Name="x4" Type="Real" Optional="false">The fourth x coordinate.</Parameter>
			<Parameter Name="y4" Type="Real" Optional="false">The fourth y coordinate.</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha of the sprite (from 0 to 1 where 0 is transparent and 1 opaque).</Parameter>
		</Function>
		<Function Name="draw_sprite_stretched" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function simply takes a sprite resource and stretches it over the given width and height so that it occupies that area. As with draw_sprite() you can specify a sprite and a sub-image for drawing, then the x / y position in the room for the sprite to be drawn at and finally a width and a height (which must be pixel values). The image below shows the result of this function with different sets of arguments:</Description>
			<Parameter Name="sprite" Type="Asset.GMSprite" Optional="false">The index of the sprite to draw.</Parameter>
			<Parameter Name="subimg" Type="Real" Optional="false">The subimg (frame) of the sprite to draw (image_index or -1 correlate to the current frame of animation in the object).</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of where to draw the sprite.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of where to draw the sprite.</Parameter>
			<Parameter Name="w" Type="Real" Optional="false">The width of the area the stretched sprite will occupy.</Parameter>
			<Parameter Name="h" Type="Real" Optional="false">The height of the area the stretched sprite will occupy.</Parameter>
		</Function>
		<Function Name="draw_sprite_stretched_ext" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function does exactly the same as the draw_sprite_stretched() function with the added ability to set the colour blending and alpha value for the sprite when it is drawn (similar to the function draw_sprite_ext()).</Description>
			<Parameter Name="sprite" Type="Asset.GMSprite" Optional="false">The index of the sprite to draw.</Parameter>
			<Parameter Name="subimg" Type="Real" Optional="false">The subimg (frame) of the sprite to draw (image_index or -1 correlate to the current frame of animation in the object).</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of where to draw the sprite.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of where to draw the sprite.</Parameter>
			<Parameter Name="w" Type="Real" Optional="false">The width of the area the stretched sprite will occupy.</Parameter>
			<Parameter Name="h" Type="Real" Optional="false">The height of the area the stretched sprite will occupy.</Parameter>
			<Parameter Name="colour" Type="Constant.Color" Optional="false">The colour with which to blend the sprite. c_white is to display it normally.</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha of the sprite (from 0 to 1 where 0 is transparent and 1 opaque).</Parameter>
		</Function>
		<Function Name="draw_sprite_tiled" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will take a sprite and then repeatedly tile it across the whole view (or room if no view is defined), starting from the coordinates that you give in the function. Tiling is based on the width and height of the sprite as defined by the sprite variables of the instance running the code. This function is for 2D (orthographic) projections only, and will not work correctly when a 3D camera projection is used.</Description>
			<Parameter Name="sprite" Type="Asset.GMSprite" Optional="false">The index of the sprite to draw.</Parameter>
			<Parameter Name="subimg" Type="Real" Optional="false">The subimg (frame) of the sprite to draw (image_index or -1 correlate to the current frame of animation in the object).</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of where to draw the sprite.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of where to draw the sprite.</Parameter>
		</Function>
		<Function Name="draw_sprite_tiled_ext" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will take a sprite and then repeatedly tile it across the whole view (or room if no view is defined), starting from the coordinates that you give in the function and with each tile scaled, colour blended and with the alpha that you define (these properties are the same as those used in draw_sprite_ext()). This function is for 2D (orthographic) projections only, and will not work correctly when a 3D camera projection is used.</Description>
			<Parameter Name="sprite" Type="Asset.GMSprite" Optional="false">The index of the sprite to draw.</Parameter>
			<Parameter Name="subimg" Type="Real" Optional="false">The subimg (frame) of the sprite to draw (image_index or -1 correlate to the current frame of animation in the object).</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of where to draw the sprite.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of where to draw the sprite.</Parameter>
			<Parameter Name="xscale" Type="Real" Optional="false">The horizontal scaling of the sprite. A multiplier &apos; 1 = normal scaling, 0.5 is half etc.</Parameter>
			<Parameter Name="yscale" Type="Real" Optional="false">The vertical scaling of the sprite. A multiplier &apos; 1 = normal scaling, 0.5 is half etc.</Parameter>
			<Parameter Name="colour" Type="Constant.Color" Optional="false">The colour with which to blend the sprite. c_white is to display it normally.</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha of the sprite (from 0 to 1 where 0 is transparent and 1 opaque).</Parameter>
		</Function>
		<Function Name="draw_tile" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can draw any given tile from a tile set - compete with rotations, flips and mirrors - setting the frame (if animated) and the position within the room. The tile set ID value is the tile set index as set in the IDE and the tile data is the data &quot;blob&quot; that contains all the information about the tile index and the transformations that have been applied. You can use the function tilemap_get() to get the tile data which can then be manipulated using the Tile Functions, or you can construct it yourself using the following tile constants along with the index value of the tile to create:</Description>
			<Parameter Name="tile set" Type="Asset.GMTileSet" Optional="false">The ID of the tile set to use</Parameter>
			<Parameter Name="tiledata" Type="Real" Optional="false">The tile data to use</Parameter>
			<Parameter Name="frame" Type="Real" Optional="false">The frame number for the animated tile to use (default 0 for non-animated tiles)</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position within the room to draw at</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position within the room to draw at</Parameter>
		</Function>
		<Function Name="draw_tilemap" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to draw a given tilemap anywhere in the room. You give the tilemap element ID (which you get when you create a tilemap element using layer_tilemap_create() or when you use the function layer_tilemap_get_id()), then give the x/y position for drawing (in the room). Note that this will simply draw the tilemap at the specified point, using the layer depth of the instance that is calling the function. It does not move the tilemap - nor change it in any way - and does it matter if the tilemap is flagged as visible or not.</Description>
			<Parameter Name="tilemap_element_id" Type="Id.TileMapElement" Optional="false">The unique ID value of the tilemap element to get the cell y position of</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position within the room to draw at</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position within the room to draw at</Parameter>
		</Function>
		<Function Name="application_get_position" Deprecated="false" ReturnType="Array[Real]" Pure="true">
			<Description>When you have &quot;maintain aspect ratio&quot; ticked in the Game Options for a target platform, GameMaker will automatically set the draw position for the application surface so that it is displayed correctly centered and scaled on the given display. However if you are manipulating this surface and wish to draw it yourself, then this function gives you an easy way to find exactly where within the display or window that the surface was being drawn so that you can then draw it there yourself, or align GUI images or post draw images to it.</Description>
		</Function>
		<Function Name="application_surface_draw_enable" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>You can use this function to enable or disable the automatic drawing of the application surface. By default this is enabled, but in many cases you will want to take over when and how the surface is drawn (when using shaders for example), in which case you would use this function to set it to false so that you can draw it yourself when and how you require. It&apos;s important to note that when you switch off automatic drawing and draw the application surface yourself, that you may see certain issues with the alpha component of sprites and the surface itself. This is because GameMaker will draw the application surface without alpha blending when the automatic drawing is on. If you switch off automatic drawing then you need to handle this yourself, using the following code (for example):</Description>
			<Parameter Name="flag" Type="Bool" Optional="false">The flag will be either true (enabled, the default value) or false (disabled).</Parameter>
		</Function>
		<Function Name="application_surface_enable" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can enable or disable the application surface. By default the application surface is enabled and all drawing for the Draw events will be done to that and the surface drawn to the screen. However on some older devices and specific chipsets this may result in poorer performance. In those cases you can switch off drawing to the application surface and all Draw event drawing will then be done directly to the screen buffer.</Description>
			<Parameter Name="enable" Type="Bool" Optional="false">Set to enable (true) or disable (false) the application surface.</Parameter>
		</Function>
		<Function Name="application_surface_is_enabled" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will return true if the application surface is being used for drawing, or false if the screen buffer is being used.</Description>
		</Function>
		<Function Name="video_open" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can open a video from the specified path or url</Description>
			<Parameter Name="path" Type="String" Optional="false">Set the path or url to the video.</Parameter>
		</Function>
		<Function Name="video_close" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function is used to close the video file and free up any memory associated with it.</Description>
		</Function>
		<Function Name="video_set_volume" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will set the volume for any video that you play</Description>
			<Parameter Name="volume" Type="Real" Optional="false">The volume is a linear value from 0 to 1.</Parameter>
		</Function>
		<Function Name="video_draw" Deprecated="false" ReturnType="Array[Real]" Pure="true">
			<Description>This function will draw the currently selected video to surfaces which will then be used to draw the video</Description>
		</Function>
		<Function Name="video_pause" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will pause the video</Description>
		</Function>
		<Function Name="video_resume" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will resume the video</Description>
		</Function>
		<Function Name="video_enable_loop" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will enable or disable the loop</Description>
			<Parameter Name="enable" Type="Bool" Optional="false">Set loop enable or disable.</Parameter>
		</Function>
		<Function Name="video_seek_to" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will move the position of the video in milliseconds</Description>
			<Parameter Name="milliseconds" Type="Real" Optional="false">Set the position in milliseconds.</Parameter>
		</Function>
		<Function Name="video_get_duration" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the duration of video in milliseconds</Description>
		</Function>
		<Function Name="video_get_position" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the position of video in milliseconds</Description>
		</Function>
		<Function Name="video_get_status" Deprecated="false" ReturnType="Constant.VideoStatus" Pure="true">
			<Description>This function will return the status of the video</Description>
		</Function>
		<Function Name="video_get_format" Deprecated="false" ReturnType="Constant.VideoFormat" Pure="true">
			<Description>This function will return the format of the surface</Description>
		</Function>
		<Function Name="video_is_looping" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will return true if loop is enabled</Description>
		</Function>
		<Function Name="video_get_volume" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the volume 0-1</Description>
		</Function>


		<Function Name="draw_surface" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can draw a surface at a given position within the room, with the top left corner of the image being drawn at the specified x/y position.</Description>
			<Parameter Name="id" Type="Id.Surface" Optional="false">The unique ID value of the surface to draw.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position of where to draw the surface.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position of where to draw the surface.</Parameter>
		</Function>
		<Function Name="draw_surface_ext" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will draw the given surface as in the function draw_surface() but with additional options to change the scale, blending, rotation and alpha of the surface being drawn. Changing these values does not modify the resource in any way (only how it is drawn).</Description>
			<Parameter Name="id" Type="Id.Surface" Optional="false">The unique ID value of the surface to draw.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position of where to draw the surface.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position of where to draw the surface.</Parameter>
			<Parameter Name="xscale" Type="Real" Optional="false">The horizontal scale.</Parameter>
			<Parameter Name="yscale" Type="Real" Optional="false">The vertical scale.</Parameter>
			<Parameter Name="rot" Type="Real" Optional="false">The rotation or angle to draw the surface.</Parameter>
			<Parameter Name="col" Type="Constant.Color" Optional="false">The colour with which to blend the surface.</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha transparency for drawing the surface.</Parameter>
		</Function>
		<Function Name="draw_surface_general" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function combines the function draw_surface_ext() with the function draw_surface_part(), adding in some additional blending options so that each corner of the final surface part can be blended with an individual colour.</Description>
			<Parameter Name="id" Type="Id.Surface" Optional="false">The unique ID value of the surface to draw.</Parameter>
			<Parameter Name="left" Type="Real" Optional="false">The left position in the surface of the part to be drawn.</Parameter>
			<Parameter Name="top" Type="Real" Optional="false">The top position in the surface of the part to be drawn.</Parameter>
			<Parameter Name="w" Type="Real" Optional="false">The width of the part to be draw, from left.</Parameter>
			<Parameter Name="h" Type="Real" Optional="false">The height of the part to be draw, from top.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position of where to draw the surface.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position of where to draw the surface.</Parameter>
			<Parameter Name="xscale" Type="Real" Optional="false">The horizontal scaling to draw the surface with.</Parameter>
			<Parameter Name="yscale" Type="Real" Optional="false">The vertical scaling to draw the surface with.</Parameter>
			<Parameter Name="rot" Type="Real" Optional="false">The rotation or angle to draw the surface with.</Parameter>
			<Parameter Name="c1" Type="Constant.Color" Optional="false">The colour of the top left corner of the surface.</Parameter>
			<Parameter Name="c2" Type="Constant.Color" Optional="false">The colour of the top right corner of the surface.</Parameter>
			<Parameter Name="c3" Type="Constant.Color" Optional="false">The colour of the bottom right corner of the surface.</Parameter>
			<Parameter Name="c4" Type="Constant.Color" Optional="false">The colour of the bottom left corner of the surface.</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha transparency to draw the surface with..</Parameter>
		</Function>
		<Function Name="draw_surface_part" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can draw part of any surface at a given position within the room. As with draw_surface() you can specify a surface, but you then need to specify the relative coordinates within the surface of an area to select for drawing. This means that a left position of 0 and a top position of 0 would be the top left corner of the surface and all further coordinates should be taken from that position.</Description>
			<Parameter Name="id" Type="Id.Surface" Optional="false">The unique ID value of the surface to draw.</Parameter>
			<Parameter Name="left" Type="Real" Optional="false">The left position in the surface of the part to be drawn.</Parameter>
			<Parameter Name="top" Type="Real" Optional="false">The top position in the surface of the part to be drawn.</Parameter>
			<Parameter Name="w" Type="Real" Optional="false">The width of the part to be draw, from left.</Parameter>
			<Parameter Name="h" Type="Real" Optional="false">The height of the part to be drawn, from top.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position of where to draw the surface.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position of where to draw the surface.</Parameter>
		</Function>
		<Function Name="draw_surface_part_ext" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will draw a part of the chosen surface at the given position following the same rules as per draw_surface_part(), only now you can scale the part, blend a colour with it, or change its alpha when drawing it to the screen (the same as when drawing a surface with draw_surface_ext()).</Description>
			<Parameter Name="id" Type="Id.Surface" Optional="false">The unique ID value of the surface to draw.</Parameter>
			<Parameter Name="left" Type="Real" Optional="false">The left position in the surface of the part to be drawn.</Parameter>
			<Parameter Name="top" Type="Real" Optional="false">The top position in the surface of the part to be drawn.</Parameter>
			<Parameter Name="w" Type="Real" Optional="false">The width of the part to be draw, from left.</Parameter>
			<Parameter Name="h" Type="Real" Optional="false">The height of the part to be drawn, from top.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position of where to draw the surface.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position of where to draw the surface.</Parameter>
			<Parameter Name="xscale" Type="Real" Optional="false">The horizontal scaling the part should be drawn with.</Parameter>
			<Parameter Name="yscale" Type="Real" Optional="false">The vertical scaling the part should be drawn with.</Parameter>
			<Parameter Name="colour" Type="Constant.Color" Optional="false">The colour blending the part should be drawn with.</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha transparency the part should be drawn with.</Parameter>
		</Function>
		<Function Name="draw_surface_stretched" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function simply takes a surface and stretches it over the given width and height so that it occupies the area. As with draw_surface() you can specify a surface and then the x / y position in the room for the surface to be drawn at and finally a width and a height (which must be pixel values).</Description>
			<Parameter Name="id" Type="Id.Surface" Optional="false">The unique ID value of the surface to draw.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position of where to draw the surface.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position of where to draw the surface.</Parameter>
			<Parameter Name="w" Type="Real" Optional="false">The width at which to draw the surface.</Parameter>
			<Parameter Name="h" Type="Real" Optional="false">The height at which to draw the surface.</Parameter>
		</Function>
		<Function Name="draw_surface_stretched_ext" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function does exactly the same as the draw_surface_stretched() function with the added ability to set the colour blending and alpha value for the surface when it is drawn (similar to the function draw_surface_ext()).</Description>
			<Parameter Name="id" Type="Id.Surface" Optional="false">The unique ID value of the surface to draw.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position of where to draw the surface.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position of where to draw the surface.</Parameter>
			<Parameter Name="w" Type="Real" Optional="false">The width at which to draw the surface.</Parameter>
			<Parameter Name="h" Type="Real" Optional="false">The height at which to draw the surface.</Parameter>
			<Parameter Name="colour" Type="Constant.Color" Optional="false">The colour with which to colour the surface.</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha with which to blend the surface.</Parameter>
		</Function>
		<Function Name="draw_surface_tiled" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will take a surface and then repeatedly tile it across the whole room, starting from the coordinates that you give in the function.</Description>
			<Parameter Name="id" Type="Id.Surface" Optional="false">The unique ID value of the surface to draw.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position of where to draw the surface.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position of where to draw the surface.</Parameter>
		</Function>
		<Function Name="draw_surface_tiled_ext" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will take a surface and then repeatedly tile it across the whole room, starting from the coordinates that you give in the function and with each tile scaled, colour blended and with the alpha that you define (these properties are the same as those used in draw_surface_ext()).</Description>
			<Parameter Name="id" Type="Id.Surface" Optional="false">The unique ID value of the surface to draw.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of where to draw the surface.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of where to draw the surface.</Parameter>
			<Parameter Name="xscale" Type="Real" Optional="false">The horizontal scaling of the surface.</Parameter>
			<Parameter Name="yscale" Type="Real" Optional="false">The vertical scaling of the surface.</Parameter>
			<Parameter Name="col" Type="Constant.Color" Optional="false">The colour with which to blend the surface.</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha of the surface.</Parameter>
		</Function>
		<Function Name="surface_copy" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function simply takes the image from one surface and copies it onto another one at the specified local position within that surface (where the (0,0) position is the top left corner of the destination surface). If the destination surface already has information this will be overwritten by the copy, and the function does not change the source surface in any way.</Description>
			<Parameter Name="destination" Type="Id.Surface" Optional="false">The ID of the surface to copy the other surface to.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position to copy to.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position to copy to.</Parameter>
			<Parameter Name="source" Type="Id.Surface" Optional="false">The ID of surface to be copied.</Parameter>
		</Function>
		<Function Name="surface_copy_part" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function simply takes the image from one surface and copies it onto another one at the specified local position within that surface (where the (0,0) position is the top left corner of the destination surface). You can specify a local x and y position to copy from as well as the width and height of the section. Please note that these are coordinates based on the surface size and not on the position at which the surface is being drawn in the room. If the destination surface already has information this will be overwritten by the copy, and the function does not change the source surface in any way.</Description>
			<Parameter Name="destination" Type="Id.Surface" Optional="false">The ID of the surface to copy the other surface to.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position to copy to.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position to copy to.</Parameter>
			<Parameter Name="source" Type="Id.Surface" Optional="false">The ID of the surface to be copied.</Parameter>
			<Parameter Name="xs" Type="Real" Optional="false">The x position in the source surface to copy from.</Parameter>
			<Parameter Name="ys" Type="Real" Optional="false">The y position in the source surface to copy from.</Parameter>
			<Parameter Name="ws" Type="Real" Optional="false">The width of the area in the source surface to copy from.</Parameter>
			<Parameter Name="hs" Type="Real" Optional="false">The height of the area in the source surface to copy from.</Parameter>
		</Function>
		<Function Name="surface_create" Deprecated="false" ReturnType="Id.Surface" Pure="true">
			<Description>This function is used to create a surface and will return the index of the surface which should be stored in a variable for future function calls. When the surface is first created, it may contain &quot;noise&quot; as basically it is just an area of memory that is put aside for the purpose (and that memory may still contain information), so you may want to clear the surface before use with a function like draw_clear_alpha().</Description>
			<Parameter Name="w" Type="Real" Optional="false">The width of the surface to be created.</Parameter>
			<Parameter Name="h" Type="Real" Optional="false">The height of the surface to be created.</Parameter>
			<Parameter Name="format" Type="Constant.SurfaceFormatType" Optional="true">The format of the surface to be created.</Parameter>
		</Function>
		<Function Name="surface_create_ext" Deprecated="false" ReturnType="Id.Surface" Pure="true">
			<Description>This function allows you to attach a surface to a canvas element that already exists in your web page, meaning that you can effectively split up portions of your game to be drawn at various different places within the page. To that end, you must have defined the canvas element correctly within the *.html page of your game using the correct sizes and names that correspond to the surfaces you wish to create. So, you would have your &quot;main&quot; canvas, and then your secondary surface canvas elements, which will be assigned using this function to the correct surfaces. The following image is an example of how a page with three canvas elements would be set up:</Description>
			<Parameter Name="name" Type="String" Optional="false">The name of the canvas element to link the surface to.</Parameter>
			<Parameter Name="w" Type="Real" Optional="false">The width of the surface to be created.</Parameter>
			<Parameter Name="h" Type="Real" Optional="false">The height of the surface to be created.</Parameter>
		</Function>
		<Function Name="surface_format_is_supported" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function is used to test whether the specified surface format is supported on the current platform.</Description>
			<Parameter Name="format" Type="Constant.SurfaceFormatType" Optional="true">The surface format to be tested.</Parameter>
		</Function>
		<Function Name="surface_depth_disable" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function disables the automatic depth buffer generation for all surfaces that are created after it has been disabled. Normally all surfaces have depth buffers so if you draw 3D objects to them then it&apos;ll sort them properly by depth in order to maintain functional parity between rendering to surfaces and rendering to the back buffer, however allocating depth buffers essentially doubles the amount of memory required for surfaces, which could be an excessive and unnecessary overhead especially if your game is very memory intensive, and for 2D games they aren&apos;t generally required.</Description>
			<Parameter Name="disable" Type="Bool" Optional="false">If set to true the depth buffer will be disabled for created surfaces.</Parameter>
		</Function>
		<Function Name="surface_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function is essential when working with surfaces due to their volatile nature. Surfaces are always held in texture memory which means that they can be destroyed from one moment to the next (for example, when a screensaver starts on windows, or when minimised on an Android device), so you should always check that a surface exists before doing anything with it (this includes drawing it to the screen). The example code below shows a typical use of this command in the draw event of an instance to check for a surface and re-create it if it has been removed (note that the surface will have been originally created in the create event of the object).</Description>
			<Parameter Name="surface_id" Type="Id.Surface" Optional="false">The ID of the surface to check.</Parameter>
		</Function>
		<Function Name="surface_free" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>When you are working with surfaces, you should always use this function whenever you are finished using them. Surfaces take up space in memory and so need to be removed, normally at the end of a room, but it can be done at any time depending on the use you put them to. Failure to do so can cause memory leaks which will eventually slow down and crash your game.</Description>
			<Parameter Name="surface_id" Type="Id.Surface" Optional="false">The ID of the surface to be freed.</Parameter>
		</Function>
		<Function Name="surface_getpixel" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to get the colour of a specific pixel from a surface, using the local coordinates of the surface where (0,0) is the top left corner. This function should not be used very often as it is extremely slow and may cause a pause in your game.</Description>
			<Parameter Name="surface_id" Type="Id.Surface" Optional="false">The ID of the surface.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position on the surface from which to get the pixel.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position on the surface from which to get the pixel.</Parameter>
		</Function>
		<Function Name="surface_getpixel_ext" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the full abgr 32bit value of any pixel of a (previously created) surface.</Description>
			<Parameter Name="surface_id" Type="Id.Surface" Optional="false">The ID of the surface to use.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of the pixel to check</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of the pixel to check</Parameter>
		</Function>
		<Function Name="surface_get_depth_disable" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function checks to see if the automatic depth buffer generation for surfaces is enabled. Normally all surfaces have depth buffers so if you draw 3D objects to them then it&apos;ll sort them properly by depth, however allocating depth buffers essentially doubles the size of surfaces, which could be an excessive and unnecessary overhead especially if your game is very memory intensive or predominantly 2D. In these cases you can check this using this function and disable the depth buffer for surfaces if required using the function surface_depth_disable().</Description>
		</Function>
		<Function Name="surface_get_height" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function simply returns the height, in pixels, of the indexed surface. It should be noted that if you call this to check the application_surface immediately after having changed its size using surface_resize() it will not return the new value as the change needs a step or two to be fully processed. After waiting a step it should return the new size correctly.</Description>
			<Parameter Name="surface_id" Type="Id.Surface" Optional="false">The ID of the surface to get the height of.</Parameter>
		</Function>
		<Function Name="surface_get_target" Deprecated="false" ReturnType="Id.Surface" Pure="true">
			<Description>With this function you can get the ID of the current surface being targeted for drawing to. If you created that surface using surface_create(), then this will be the positive integer which is the unique ID for that surface</Description>
		</Function>
		<Function Name="surface_get_target_ext" Deprecated="false" ReturnType="Id.Surface" Pure="true">
			<Description>This function will retrieve the surface ID assigned to one of the 4 render targets available to surfaces. You supply the index of the render target to check, and the function will return -1 if no surface is assigned, or an integer value &gt;= 0, representing the ID of the surface assigned (as returned by the function surface_create()).</Description>
			<Parameter Name="index" Type="Real" Optional="false">The render target index to check (from 0 to 3).</Parameter>
		</Function>
		<Function Name="surface_get_texture" Deprecated="false" ReturnType="Pointer.Texture" Pure="true">
			<Description>This function returns a special pointer for the surface texture. This value can then be used in other draw functions, particularly in general 3D and some of the 2D primitive functions.</Description>
			<Parameter Name="surface_id" Type="Id.Surface" Optional="false">The ID of the surface to get the width of.</Parameter>
		</Function>
		<Function Name="surface_get_width" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function simply returns the width, in pixels, of the indexed surface. It should be noted that if you call this to check the application_surface immediately after having changed its size using surface_resize() it will not return the new value as the change needs a step or two to be fully processed. After waiting a step it should return the new size correctly.</Description>
			<Parameter Name="surface_id" Type="Id.Surface" Optional="false">The ID of the surface to get the width of.</Parameter>
		</Function>
		<Function Name="surface_reset_target" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you reset all further drawing from the target surface back to the screen. Please note that to start drawing to a surface you must first have called the function surface_set_target() and then this one after you have finished, for each surface target that you have set or else nothing will be drawn on the screen as all further drawing (even in other instances) will be done on the surface. You should also realise that nothing will be seen if the surface itself is not drawn on the screen in the draw event of an instance.</Description>
		</Function>
		<Function Name="surface_resize" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will resize a surface to the given dimensions (in pixels). The &quot;surface_id&quot; is that of a surface you have created previously, or the application_suface, and the function will resize that surface. Note that this will neither crop nor stretch the contents of the surface, but rather it destroys the current surface and recreates it with the same handle (surface_id) with the new dimensions, meaning that it will need to be cleared and drawn to again (unless it is the application_surface in which case GameMaker will do this automatically).</Description>
			<Parameter Name="surface_id" Type="Id.Surface" Optional="false">The ID of the surface to change.</Parameter>
			<Parameter Name="w" Type="Real" Optional="false">The width of the new surface.</Parameter>
			<Parameter Name="h" Type="Real" Optional="false">The height of the new surface.</Parameter>
		</Function>
		<Function Name="surface_save" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will save a surface to disc using the given filename. The surface must be saved as a *.png format file.</Description>
			<Parameter Name="surface_id" Type="Id.Surface" Optional="false">The ID of the surface to set as the drawing target.</Parameter>
			<Parameter Name="fname" Type="String" Optional="false">The name of the saved image file.</Parameter>
		</Function>
		<Function Name="surface_save_part" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will save a part of a surface to disc using the given filename. The surface must be saved as a *.png format file, and the (x,y) position must be given as local coordinates to the surface, bearing in mind that the top left corner of the surface is always (0,0).</Description>
			<Parameter Name="surface_id" Type="Id.Surface" Optional="false">The ID of the surface to set as the drawing target.</Parameter>
			<Parameter Name="fname" Type="String" Optional="false">The name of the saved image file.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The starting x position within the surface.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The starting y position within the surface.</Parameter>
			<Parameter Name="width" Type="Real" Optional="false">The width of the part to save.</Parameter>
			<Parameter Name="height" Type="Real" Optional="false">The height of the part to save.</Parameter>
		</Function>
		<Function Name="surface_set_target" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>With this function you set all further drawing to the target surface rather than the screen and in this way you can tell GameMaker to only draw specific things to the specified surface. Please note that if you do not call surface_reset_target() after you have finished, nothing will be drawn on the screen as all further drawing (even in other instances) will be done on the surface. You should also realise that nothing will be seen if the surface itself is not drawn on the screen in the draw event of an instance. You can check the return value of this function too as a debug tool to check whether the surface target was set or not, with a return value of 0 being a failure to set the target and any other positive value being a success.</Description>
			<Parameter Name="surface_id" Type="Id.Surface" Optional="false">The ID of the surface to set as the drawing target.</Parameter>
		</Function>
		<Function Name="surface_set_target_ext" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>This function is for use with the Shader Functions and sets the MRT (0 - 3) for native level shaders (DX9, DX11, OpenGL).</Description>
			<Parameter Name="index" Type="Real" Optional="false">The render target index to use (from 0 to 3).</Parameter>
			<Parameter Name="surface_id" Type="Id.Surface" Optional="false">The ID of the surface to use.</Parameter>
		</Function>
		<Function Name="draw_get_font" Deprecated="false" ReturnType="Asset.GMFont" Pure="true">
			<Description>This function will get the font currently assigned for drawing text. The function will return -1 if no font is set, or the ID value (a positive integer) for the font resource assigned.</Description>
		</Function>
		<Function Name="draw_get_halign" Deprecated="false" ReturnType="Constant.HAlign" Pure="true">
			<Description>This function is used to get the text alignment setting along the horizontal axis, and will return one of the constants listed below.</Description>
		</Function>
		<Function Name="draw_get_valign" Deprecated="false" ReturnType="Constant.VAlign" Pure="true">
			<Description>This function is used to get the text alignment setting along the vertical axis, and will return one of the constants listed below.</Description>
		</Function>
		<Function Name="draw_highscore" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This simple function will draw the current list of internally stored high scores using the currently set font, colour and alpha values within the specified rectangle. You provide the coordinates for the upper left corner and lower right corner of the rectangular area to draw the text, and GameMaker will take care of the rest, with spacing and position being done automatically.</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the left of the highscore rectangle.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the top of the highscore rectangle.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the right of the highscore rectangle.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the bottom of the highscore rectangle.</Parameter>
		</Function>
		<Function Name="draw_set_font" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will set the font to be used for all further text drawing. This font must have been added into the font assets of the game or have been created using either the font_add() or font_add_sprite().</Description>
			<Parameter Name="font" Type="Asset.GMFont" Optional="false">The name of the font to use.</Parameter>
		</Function>
		<Function Name="draw_set_halign" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function is used to align text along the horizontal axis and changing the horizontal alignment will change the position and direction in which all further text is drawn with the default value being fa_left. The following constants are accepted:</Description>
			<Parameter Name="halign" Type="Constant.HAlign" Optional="false">Horizontal alignment.</Parameter>
		</Function>
		<Function Name="draw_set_valign" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function is used to align text along the vertical axis and changing the vertical alignment will change the position and direction in which all further text is drawn, with the default value being fa_top. The following constants are accepted:</Description>
			<Parameter Name="valign" Type="Constant.VAlign" Optional="false">Vertical alignment.</Parameter>
		</Function>
		<Function Name="draw_text" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can draw any string at any position within the room (for drawing real numbers you should use the string() function to convert them into text). To combine strings you can use + (see example below) and you can also use \n within a string to add a line break so it is drawn over multiple lines (for information on how to properly format a string and what escape characters you can use, please see here). The colour of the text and the alpha are governed by the current base alpha and colour values as set by draw_set_alpha() and draw_set_colour().</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of the drawn string.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of the drawn string.</Parameter>
			<Parameter Name="string" Type="Any" Optional="false">The string to draw.</Parameter>
		</Function>
		<Function Name="draw_text_colour" Deprecated="false" ReturnType="Undefined" Locale="GB" Pure="true">
			<Description>This function will draw text in a similar way to draw_text() only now you can choose the colours to use for colouring the text as well as the alpha value, and these new values will be used instead of the base drawing colour and alpha.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of the drawn string.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of the drawn string.</Parameter>
			<Parameter Name="string" Type="Any" Optional="false">The string to draw.</Parameter>
			<Parameter Name="c1" Type="Constant.Color" Optional="false">The colour for the top left of the drawn text.</Parameter>
			<Parameter Name="c2" Type="Constant.Color" Optional="false">The colour for the top right of the drawn text.</Parameter>
			<Parameter Name="c3" Type="Constant.Color" Optional="false">The colour for the bottom right of the drawn text.</Parameter>
			<Parameter Name="c4" Type="Constant.Color" Optional="false">The colour for the bottom left of the drawn text.</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha for the text.</Parameter>
		</Function>
		<Function Name="draw_text_ext" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will draw text in a similar way to draw_text() only now you can set the space between each line of text - should the text occupy more than one line - and limit the width (in pixels) of the string per line so that should any line exceed this value, GameMaker will automatically split the text to the next line at the nearest available white-space (if the text has no white-spaces then it will overrun this maximum width value). Note that any white space placed at the start of the string will be stripped out before being parsed for drawing because of this. Also note that a value of -1 for the line separation argument will default to a separation based on the height of the &quot;M&quot; character in the chosen font.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of the drawn string.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of the drawn string.</Parameter>
			<Parameter Name="string" Type="Any" Optional="false">The string to draw.</Parameter>
			<Parameter Name="sep" Type="Real" Optional="false">The distance in pixels between lines of text.</Parameter>
			<Parameter Name="w" Type="Real" Optional="false">The maximum width in pixels of the string before a line break.</Parameter>
		</Function>
		<Function Name="draw_text_ext_colour" Deprecated="false" ReturnType="Undefined" Locale="GB" Pure="true">
			<Description>This function is a combination of the base draw_text() function with the draw_text_ext() and draw_text_colour() functions, permitting you to define gradient colours for text as well as the line spacing and maximum width per line all together.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of the drawn string.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of the drawn string.</Parameter>
			<Parameter Name="string" Type="Any" Optional="false">The string to draw.</Parameter>
			<Parameter Name="sep" Type="Real" Optional="false">The distance in pixels between lines of text.</Parameter>
			<Parameter Name="w" Type="Real" Optional="false">The maximum width in pixels of the string before a line break.</Parameter>
			<Parameter Name="c1" Type="Constant.Color" Optional="false">The colour for the top left of the drawn text.</Parameter>
			<Parameter Name="c2" Type="Constant.Color" Optional="false">The colour for the top right of the drawn text.</Parameter>
			<Parameter Name="c3" Type="Constant.Color" Optional="false">The colour for the bottom right of the drawn text.</Parameter>
			<Parameter Name="c4" Type="Constant.Color" Optional="false">The colour for the bottom left of the drawn text.</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha for the text.</Parameter>
		</Function>
		<Function Name="draw_text_ext_transformed" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function is a combination of the base draw_text() function with the draw_text_ext() and draw_text_transformed() functions, permitting you to scale and rotate text while maintaining a specific line spacing and maximum width per line. Note that the &quot;width&quot; argument is based on a scale of 1, so if the scale is different, this value should be changed proportionally. For example, if the base width for a line break is 300 and you set the scale to 2, then the text will appear wrong, over-running the given width. Instead you should have set the width to 150 to compensate the scaling.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of the drawn string.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of the drawn string.</Parameter>
			<Parameter Name="string" Type="Any" Optional="false">The string to draw.</Parameter>
			<Parameter Name="sep" Type="Real" Optional="false">The distance in pixels between lines of text.</Parameter>
			<Parameter Name="w" Type="Real" Optional="false">The maximum width in pixels of the string before a line break.</Parameter>
			<Parameter Name="xscale" Type="Real" Optional="false">The horizontal scale.</Parameter>
			<Parameter Name="yscale" Type="Real" Optional="false">The vertical scale.</Parameter>
			<Parameter Name="angle" Type="Real" Optional="false">The angle of the text.</Parameter>
		</Function>
		<Function Name="draw_text_ext_transformed_colour" Deprecated="false" ReturnType="Undefined" Locale="GB" Pure="true">
			<Description>This function is a combination of the base draw_text() function with the draw_text_ext(), draw_text_transformed() and draw_text_colour() functions. As such, this is the most general of all functions for drawing text and gives a large amount of flexibility when drawing. Note that the &quot;width&quot; argument is based on a scale of 1, so if the scale is different, this value should be changed proportionally. For example, if the base width for a line break is 300 and you set the scale to 2, then the text will appear wrong, over-running the given width. Instead you should have set the width to 150 to compensate the scaling.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of the drawn string.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of the drawn string.</Parameter>
			<Parameter Name="string" Type="Any" Optional="false">The string to draw.</Parameter>
			<Parameter Name="sep" Type="Real" Optional="false">The distance in pixels between lines of text.</Parameter>
			<Parameter Name="w" Type="Real" Optional="false">The maximum width in pixels of the string before a line break.</Parameter>
			<Parameter Name="xscale" Type="Real" Optional="false">The horizontal scale.</Parameter>
			<Parameter Name="yscale" Type="Real" Optional="false">The vertical scale.</Parameter>
			<Parameter Name="angle" Type="Real" Optional="false">The angle of the text.</Parameter>
			<Parameter Name="c1" Type="Constant.Color" Optional="false">The colour for the top left of the drawn text.</Parameter>
			<Parameter Name="c2" Type="Constant.Color" Optional="false">The colour for the top right of the drawn text.</Parameter>
			<Parameter Name="c3" Type="Constant.Color" Optional="false">The colour for the bottom right of the drawn text.</Parameter>
			<Parameter Name="c4" Type="Constant.Color" Optional="false">The colour for the bottom left of the drawn text.</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha for the text.</Parameter>
		</Function>
		<Function Name="draw_text_transformed" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will draw text in a similar way to draw_text() only now you can choose to scale the text along the horizontal or vertical axis (effectively stretching or shrinking it) and also have GameMaker draw it at an angle (where 0 is normal and every degree over 0 rotates the text anti-clockwise).</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of the drawn string.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of the drawn string.</Parameter>
			<Parameter Name="string" Type="Any" Optional="false">The string to draw.</Parameter>
			<Parameter Name="xscale" Type="Real" Optional="false">The horizontal scale (default 1).</Parameter>
			<Parameter Name="yscale" Type="Real" Optional="false">The vertical scale(default 1).</Parameter>
			<Parameter Name="angle" Type="Real" Optional="false">The angle of the text.</Parameter>
		</Function>
		<Function Name="draw_text_transformed_colour" Deprecated="false" ReturnType="Undefined" Locale="GB" Pure="true">
			<Description>This function is a combination of the base draw_text() function with the draw_text_transformed() and draw_text_colour() functions, permitting you to scale and rotate text as well as colour it with a gradient fill and change its alpha value, ignoring the base alpha and colour settings for drawing.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of the drawn string.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of the drawn string.</Parameter>
			<Parameter Name="string" Type="Any" Optional="false">The string to draw.</Parameter>
			<Parameter Name="xscale" Type="Real" Optional="false">The horizontal scale.</Parameter>
			<Parameter Name="yscale" Type="Real" Optional="false">The vertical scale.</Parameter>
			<Parameter Name="angle" Type="Real" Optional="false">The angle of the text.</Parameter>
			<Parameter Name="c1" Type="Constant.Color" Optional="false">The colour for the top left of the drawn text.</Parameter>
			<Parameter Name="c2" Type="Constant.Color" Optional="false">The colour for the top right of the drawn text.</Parameter>
			<Parameter Name="c3" Type="Constant.Color" Optional="false">The colour for the bottom right of the drawn text.</Parameter>
			<Parameter Name="c4" Type="Constant.Color" Optional="false">The colour for the bottom left of the drawn text.</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha for the text.</Parameter>
		</Function>
		<Function Name="draw_texture_flush" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can remove all textures from video memory, and they will then be reloaded on first use. This is the only effective way to manage video memory when you have multiple texture pages for a game, and you should flush the texture memory between levels on your game and organise the graphics using the texture group feature to ensure that the minimum number of textures are used.</Description>
		</Function>
		<Function Name="texturegroup_get_fonts" Deprecated="false" ReturnType="Array[Asset.GMFont]" Pure="true">
			<Description>With this function you can retrieve the font index of each of the fonts assigned to texture pages within the given texture group. You supply the texture group ID string (as defined in the texture Group Editor) and the function will return a 1D array where each entry contains the font index for a font resource. If the function fails - ie: an invalid group is given, or the group has no texture assigned to it - then the array will be empty (0 length).</Description>
			<Parameter Name="tex" Type="String" Optional="false">The name of the texture group to check (a string)</Parameter>
		</Function>
		<Function Name="texturegroup_get_sprites" Deprecated="false" ReturnType="Array[Asset.GMSprite]" Pure="true">
			<Description>With this function you can retrieve the sprite index of each of the sprites assigned to texture pages within the given texture group. You supply the texture group ID string (as defined in the texture Group Editor) and the function will return a 1D array where each entry contains the sprite index for a sprite resource. If the function fails - ie: an invalid group is given, or the group has no texture assigned to it - then the array will be empty (0 length).</Description>
			<Parameter Name="tex" Type="String" Optional="false">The name of the texture group to check (a string)</Parameter>
		</Function>
		<Function Name="texturegroup_get_textures" Deprecated="false" ReturnType="Array[Id.Texture]" Pure="true">
			<Description>This function can be used to retrieve the texture page IDs of the individual pages that make up a texture group. You supply the texture group ID string (as defined in the Texture Group Editor), and the function will return a 1D array, where each entry in the array is a single texture page ID. If the function fails - ie: an invalid group is given, or the group has no texture assigned to it - then the array will be empty (0 length).</Description>
			<Parameter Name="tex_id" Type="String" Optional="false">The name of the texture group to check (a string)</Parameter>
		</Function>
		<Function Name="texturegroup_get_tilesets" Deprecated="false" ReturnType="Array[Asset.GMTileSet]" Pure="true">
			<Description>With this function you can retrieve the tileset index of each of the tilesets assigned to texture pages within the given texture group. You supply the texture group ID string (as defined in the texture Group Editor) and the function will return a 1D array where each entry contains the tileset index for a tileset resource. If the function fails - ie: an invalid group is given, or the group has no texture assigned to it - then the array will be empty (0 length).</Description>
			<Parameter Name="tex" Type="String" Optional="false">The name of the texture group to check (a string)</Parameter>
		</Function>
		<Function Name="texturegroup_load" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can load all the pages for the specified texture group. You supply the texture group ID string (as defined in the texture Group Editor) and (optionally) specify whether you want to also prefetch the pages in the group (load them into GPU memory)..</Description>
			<Parameter Name="groupname" Type="String" Optional="false">The name of the texture group to load (a string)</Parameter>
			<Parameter Name="prefetch" Type="Bool" Optional="true">Whether each texture in the group should be loaded into GPU memory (defaults to true)</Parameter>
		</Function>
		<Function Name="texturegroup_unload" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can unload all pages in the specified texture group. You supply the texture group ID string (as defined in the texture Group Editor) for the group to unload.</Description>
			<Parameter Name="groupname" Type="String" Optional="false">The name of the texture group to unload (a string)</Parameter>
		</Function>
		<Function Name="texturegroup_get_status" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can retrieve the load status of the specified texture group. You supply the texture group ID string (as defined in the texture Group Editor) and the function will return a value indicating the status.</Description>
			<Parameter Name="groupname" Type="String" Optional="false">The name of the texture group to check (a string)</Parameter>
		</Function>
		<Function Name="texturegroup_set_mode" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can configure how texture group loading is handled as well as set debug options</Description>
			<Parameter Name="explicit" Type="Bool" Optional="false">If false, indicates that texture pages are automatically loaded if a sprite is rendered from an unloaded texture group</Parameter>
			<Parameter Name="debug" Type="Bool" Optional="false">If true, enables a debug view</Parameter>
			<Parameter Name="default_sprite" Type="Asset.GMSprite" Optional="false">Specifies default sprite which is used for drawing when a texture group hasn't been loaded</Parameter>
		</Function>
		<Function Name="texture_debug_messages" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to enable or disable texture debug messages. When enabled (set to true), additional information about texture page use will be sent to the output window. Set to false to disable this output again.</Description>
			<Parameter Name="enable" Type="Bool" Optional="false">Enable or disable the texture debug messages</Parameter>
		</Function>
		<Function Name="texture_flush" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to &quot;flush&quot; a texture page or a group of texture pages, ie: remove them from VRAM when no longer required. You supply the unique texture page ID (as returned by the texturegroup_* functions) to flush a single page, or you can supply a texture group name (as defined in the Texture Group Editor) to flush all the texture pages in the group.</Description>
			<Parameter Name="tex_id" Type="Any" Optional="false">The texture page ID (an integer) or a texture group ID (a string)</Parameter>
		</Function>
		<Function Name="texture_get_height" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Returns the height of the texture with the given id, which is always a value within the range 0 - 1. This can then be used when mapping textures to models or primitives.</Description>
			<Parameter Name="tex" Type="Pointer.Texture,Real" Optional="false">The texture page asset pointer to use</Parameter>
		</Function>
		<Function Name="texture_get_texel_height" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>A texel, or texture element is the fundamental unit of texture space used in computer graphics. Textures are represented by arrays of texels, just as pictures are represented by arrays of pixels, and this function returns the height of a single texel from the texture page of the image asset used.</Description>
			<Parameter Name="tex" Type="Pointer.Texture,Real" Optional="false">The texture page asset pointer to use</Parameter>
		</Function>
		<Function Name="texture_get_texel_width" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>A texel, or texture element is the fundamental unit of texture space used in computer graphics. Textures are represented by arrays of texels, just as pictures are represented by arrays of pixels, and this function returns the width of a single texel from the texture page of the image asset used.</Description>
			<Parameter Name="tex" Type="Pointer.Texture,Real" Optional="false">The texture page asset pointer to use</Parameter>
		</Function>
		<Function Name="texture_get_uvs" Deprecated="false" ReturnType="Array[Real]" Pure="true">
			<Description>This function returns a 1D array with 4 elements representing the UV coordinates for the image on the texture page, filling in the array with the following values:</Description>
			<Parameter Name="texid" Type="Pointer.Texture,Real" Optional="false">The image asset to get the texture from</Parameter>
		</Function>
		<Function Name="texture_get_width" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Returns the width of the texture with the given id, which is always a value within the range 0 - 1. This can then be used when mapping textures to models or primitives.</Description>
			<Parameter Name="tex" Type="Pointer.Texture,Real" Optional="false">The texture page asset pointer to use</Parameter>
		</Function>
		<Function Name="texture_global_scale" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function allows you to control the scaling of the texture pages on load from the WAD file that is part of your final game executable. The input value must be a power of two value and will work such that:</Description>
			<Parameter Name="pow2integer" Type="Real" Optional="false">The scale factor to use (1, no scale, 2, half scale, 4, quarter scale, etc...)</Parameter>
		</Function>
		<Function Name="texture_is_ready" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function can be used to check if a specific texture page has been unpacked and is ready for use, or if a group of texture pages have been unpacked and are ready for use. You supply the unique texture page ID (as returned by the texturegroup_* functions) or the texture group ID string (as defined in the Texture Group Editor), and the function will return true if they have been unpacked, or false otherwise.</Description>
			<Parameter Name="tex_id" Type="Any" Optional="false">The texture page ID (an integer) or a texture group ID (a string)</Parameter>
		</Function>
		<Function Name="texture_prefetch" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to &quot;prefetch&quot; a texture page or a group of texture pages, ie: load them into VRAM when required. You supply the unique texture page ID (as returned by the texturegroup_* functions) to prefetch a single page, or you can supply a texture group name (as defined in the Texture Group Editor) to prefetch all the texture pages in the group.</Description>
			<Parameter Name="tex_id" Type="Any" Optional="false">The texture page ID (an integer) or a texture group ID (a string)</Parameter>
		</Function>
		<Function Name="texture_set_stage" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will set the given stage &quot;slot&quot; a texture to be used. The number of stage &quot;slots&quot; available will depend on the platform you are compiling to, with a maximum of 8 being available for Windows, Mac and Linux, but on lower end Android devices (for example) this number can be as low as 2. It is also worth noting that the first stage &quot;slot&quot; is always used automatically by GameMaker.</Description>
			<Parameter Name="stage" Type="Id.Sampler" Optional="false">The texture &quot;slot&quot; to use.</Parameter>
			<Parameter Name="tex" Type="Pointer.Texture,Real" Optional="false">The texture to use.</Parameter>
		</Function>
		<Function Name="file_bin_close" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Closes a previously opened binary file. You supply the file ID value, as returned by the function file_bin_open().</Description>
			<Parameter Name="binfile" Type="Id.BinaryFile" Optional="false">The ID of the file to close.</Parameter>
		</Function>
		<Function Name="file_bin_open" Deprecated="false" ReturnType="Id.BinaryFile" Pure="true">
			<Description>This function will open the binary file with the indicated name. The mode indicates what can be done with the file:</Description>
			<Parameter Name="fname" Type="String" Optional="false">The name of the file to read from.</Parameter>
			<Parameter Name="mode" Type="Real" Optional="false">the indicator of what can be done with the file.</Parameter>
		</Function>
		<Function Name="file_bin_position" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will returns the current position in bytes, where 0 is the first position, of the file with the given file id. You supply the file ID value, as returned by the function file_bin_open().</Description>
			<Parameter Name="binfile" Type="Id.BinaryFile" Optional="false">The ID of the file to get the position in.</Parameter>
		</Function>
		<Function Name="file_bin_read_byte" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>This function will return a byte of data from current position within the file with the given file ID. You supply the file ID value, as returned by the function file_bin_open().</Description>
			<Parameter Name="binfile" Type="Id.BinaryFile" Optional="false">The ID of the file to get the data from.</Parameter>
		</Function>
		<Function Name="file_bin_rewrite" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function takes the filename handle as returned by the function file_bin_open() and then rewrites the file, clearing it of all previous data to start writing from the beginning of the file.</Description>
			<Parameter Name="binfile" Type="Id.BinaryFile" Optional="false">The ID of the file to rewrite.</Parameter>
		</Function>
		<Function Name="file_bin_seek" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function moves the current read position within the file to the indicated position. You supply the file ID value, as returned by the function file_bin_open(), and to append a file, move the position to the size of the file before writing.</Description>
			<Parameter Name="binfile" Type="Id.BinaryFile" Optional="false">The ID of the file to read from.</Parameter>
			<Parameter Name="pos" Type="Real" Optional="false">The position in the file to move to.</Parameter>
		</Function>
		<Function Name="file_bin_size" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the size (in bytes) of a file that has been opened for reading and/or writing. The File ID is the value returned by the function file_bin_open().</Description>
			<Parameter Name="binfile" Type="Id.BinaryFile" Optional="false">The ID of the file to get the size of.</Parameter>
		</Function>
		<Function Name="file_bin_write_byte" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>This function will write a byte of data to the file identified by the file ID at the current write position. You supply the file ID value, as returned by the function file_bin_open() and the byte of data to write.</Description>
			<Parameter Name="binfile" Type="Id.BinaryFile" Optional="false">The ID of the file to write to.</Parameter>
			<Parameter Name="byte" Type="Real" Optional="false">The data to write.</Parameter>
		</Function>
		<Function Name="base64_decode" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function will convert a string encoded previously using base64 format, into standard text. Base64 is a commonly used encoding scheme that is often used for any media that needs to be stored or transferred over the internet as text, and renders the output unreadable to the human eye.</Description>
			<Parameter Name="string" Type="String" Optional="false">The string to decode.</Parameter>
		</Function>
		<Function Name="base64_encode" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function will convert a string into a base64 format encoded string. This is a commonly used encoding scheme that is often used for any media that needs to be stored or transferred over the internet as text, and renders the output unreadable to the human eye.</Description>
			<Parameter Name="string" Type="String" Optional="false">The string to encode.</Parameter>
		</Function>
		<Function Name="json_decode" Deprecated="false" ReturnType="Any" Pure="true">
			<Description>JSON (JavaScript Object Notation) is a lightweight data-interchange format which is easy for to read and write, for both people and machines. It is built on two basic structures:</Description>
			<Parameter Name="string" Type="String" Optional="false">The JSON format string that you are passing to the function for decoding</Parameter>
		</Function>
		<Function Name="json_encode" Deprecated="false" ReturnType="String" Pure="true">
			<Description>JSON (JavaScript Object Notation) is a lightweight data-interchange format which is easy for to read and write, for both people and machines. It is built on two basic structures:</Description>
			<Parameter Name="map" Type="Id.DsMap" Optional="false">a DS map with the information to encode (or an array)</Parameter>
			<Parameter Name="prettify" Type="Bool" Optional="true">Whether of not the result JSON string should be prettified. Defaults to false.</Parameter>
		</Function>
		<Function Name="json_parse" Deprecated="false" ReturnType="Any" Pure="true">
			<Description>This function can be used to parse a JSON string (either previously created using json_stringify or from any valid source), and convert it into a collection of arrays or structs, where an array is the equivalent of a JSON array and a struct is the equivalent of a JSON object. You supply the string to parse, and the function will return the top level array or struct which can then be checked in your code. If you are not sure of the contents of the JSON, you can use the different Variable Functions (like typeof() or variable_struct_get_names()) to check the returned contents. Note that trying to parse an invalid value (ie: not a string) will throw an exception error.</Description>
			<Parameter Name="json" Type="String" Optional="false">The JSON to parse (a string)</Parameter>
		</Function>
		<Function Name="json_stringify" Deprecated="false" ReturnType="String" Pure="true">
			<Description>With this function you can convert single or nested structs and arrays into a valid JSON string. You supply the initial value to use (an array index or a struct reference) and then the function will &quot;stringify&quot; it, converting it into a JSON string, converting GameMaker arrays into JSON arrays, and GameMaker structs in to JSON objects.</Description>
			<Parameter Name="val" Type="Any" Optional="false">The reference value for a struct or array to convert into a JSON string</Parameter>
			<Parameter Name="prettify" Type="Bool" Optional="true">Whether of not the result JSON string should be prettified. Defaults to false.</Parameter>
		</Function>
		<Function Name="load_csv" Deprecated="false" ReturnType="Id.DsGrid" Pure="true">
			<Description>This function will load a CSV format file and convert it into a DS grid, returning the unique ID value for the grid created.</Description>
			<Parameter Name="filename" Type="String" Optional="false">The name of the file to open (as a string)</Parameter>
		</Function>
		<Function Name="md5_file" Deprecated="false" ReturnType="String" Pure="true">
			<Description>In cryptography, MD5 (Message-Digest algorithm 5) is a widely used cryptographic hash function with a 128-bit hash value and has been employed in a wide variety of security applications. It is also commonly used to check the integrity of files and strings. This function will take the given file and generate a unique MD5 for that file which can then be stored for later use.</Description>
			<Parameter Name="filename" Type="String" Optional="false">The file to generate the MD5 hash for.</Parameter>
		</Function>
		<Function Name="md5_string_unicode" Deprecated="false" ReturnType="String" Pure="true">
			<Description>In cryptography, MD5 (Message-Digest algorithm 5) is a widely used cryptographic hash function with a 128-bit hash value and has been employed in a wide variety of security applications. It is also commonly used to check the integrity of files and strings. This function will take an input unicode string (which is 16bits for each char) and return the 32-character hexadecimal MD5 hash that is unique to that string. In this way you can generate a secure key which can be stored and used to check the integrity of the information being sent to (or received from) an external server (for example).</Description>
			<Parameter Name="string" Type="String" Optional="false">The string to hash.</Parameter>
		</Function>
		<Function Name="md5_string_utf8" Deprecated="false" ReturnType="String" Pure="true">
			<Description>In cryptography, MD5 (Message-Digest algorithm 5) is a widely used cryptographic hash function with a 128-bit hash value and has been employed in a wide variety of security applications. It is also commonly used to check the integrity of files and strings. This function will take an input UTF-8 string (which has a variable number of bytes per character) and return the 32-character hexadecimal MD5 hash that is unique to that string. In this way you can generate a secure key which can be stored and used to check the integrity of the information being sent to (or received from) an external server (for example).</Description>
			<Parameter Name="string" Type="String" Optional="false">The string to hash.</Parameter>
		</Function>
		<Function Name="sha1_file" Deprecated="false" ReturnType="String" Pure="true">
			<Description>In cryptography, SHA-1 is a cryptographic hash function designed by the United States National Security Agency and is employed in several widely used applications popular Git where it is used to check for file changes, and the protocols TLS and SSL, PGP, SSH, S/MIME, and IPsec. This function will take an input file and return a 160 bit message digest in ASCII format unique to that file to be used for integrity verification at any later date.</Description>
			<Parameter Name="filename" Type="String" Optional="false">The file to generate the sha1 hash for.</Parameter>
		</Function>
		<Function Name="sha1_string_unicode" Deprecated="false" ReturnType="String" Pure="true">
			<Description>In cryptography, SHA-1 is a cryptographic hash function designed by the United States National Security Agency and is employed in several widely used applications and protocols like the popular Git where it is used to check for file changes. This function will take an input unicode string and returns a 160 bit message digest in ASCII format, for example:</Description>
			<Parameter Name="string" Type="String" Optional="false">The string to hash.</Parameter>
		</Function>
		<Function Name="sha1_string_utf8" Deprecated="false" ReturnType="String" Pure="true">
			<Description>In cryptography, SHA-1 is a cryptographic hash function designed by the United States National Security Agency and is employed in several widely used applications and protocols like the popular Git where it is used to check for file changes. This function will take an input UTF-8 string (which has a variable number of bytes per character) and returns a 160 bit message digest in ASCII format, for example:</Description>
			<Parameter Name="string" Type="String" Optional="false">The string to hash.</Parameter>
		</Function>
		<Function Name="zip_unzip" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will open a stored zip file and extract its contents to the given directory. Note that if you do not supply a full path to the ZIP directory then the current drive root will be used, and if you want to place it in a relative path to the game bundle working directory then you should use the working_directory variable as part of the path (relative paths using &quot;.&quot; or &quot;..&quot; will not work as expected so should be avoided). Note too that the zip must be either part of the game bundle (ie: an Included File) or have been downloaded to the storage area using http_get_file().</Description>
			<Parameter Name="zip_file" Type="String" Optional="false">The zip file to open</Parameter>
			<Parameter Name="target_directory" Type="String" Optional="false">The target directory to extract the files to</Parameter>
		</Function>
		<Function Name="directory_create" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will creates a directory with the given name in the save area.</Description>
			<Parameter Name="dname" Type="String" Optional="false">The name of the directory to create.</Parameter>
		</Function>
		<Function Name="directory_destroy" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will remove a directory with the given name in the save area.</Description>
			<Parameter Name="dname" Type="String" Optional="false">The name of the directory to remove.</Parameter>
		</Function>
		<Function Name="directory_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will return true if the indicated directory exists or false if it does not. The specified name must include the full path, not a relative path and by default you cannot access any directories from out-with the game bundle as all games are sandboxed (see the section on the File System for more information).</Description>
			<Parameter Name="dname" Type="String" Optional="false">The name of the directory to look for.</Parameter>
		</Function>
		<Function Name="filename_change_ext" Deprecated="false" ReturnType="String" Pure="false">
			<Description>This function returns the indicated file name with the extension (including the dot) changed to the new extension. By using an empty string as the new extension you can remove the extension part all together.</Description>
			<Parameter Name="fname" Type="String" Optional="false">The file to use.</Parameter>
			<Parameter Name="newext" Type="String" Optional="false">The new extension to use.</Parameter>
		</Function>
		<Function Name="filename_dir" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function returns the directory part of the indicated file name, which normally is the same as the path except for the final backslash.</Description>
			<Parameter Name="fname" Type="String" Optional="false">The file to use.</Parameter>
		</Function>
		<Function Name="filename_drive" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function returns the drive information of the filename.</Description>
			<Parameter Name="fname" Type="String" Optional="false">The file to use.</Parameter>
		</Function>
		<Function Name="filename_ext" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function returns the extension part of the indicated file name, including the leading dot.</Description>
			<Parameter Name="fname" Type="String" Optional="false">The file to use.</Parameter>
		</Function>
		<Function Name="filename_name" Deprecated="false" ReturnType="String" Pure="true">
			<Description>Using this function returns the name part of the indicated file, with the extension but without the path</Description>
			<Parameter Name="fname" Type="String" Optional="false">The file to use.</Parameter>
		</Function>
		<Function Name="filename_path" Deprecated="false" ReturnType="String" Pure="true">
			<Description>Using this function returns the path part of the indicated file path, including the final backslash.</Description>
			<Parameter Name="fname" Type="Any" Optional="false">The file name and path to use.</Parameter>
		</Function>
		<Function Name="file_attributes" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>You can use this function to check the attributes of a given file. You can add up the following constants to see the type of files you want:</Description>
			<Parameter Name="fname" Type="String" Optional="false">The name of the file to check.</Parameter>
			<Parameter Name="attr" Type="Constant.FileAttribute" Optional="false">The attributes to check for.</Parameter>
		</Function>
		<Function Name="file_copy" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will copy the specified file, giving it the new name that you choose. If you are copying a file on Android from within your Included Files area (which will be inside your APK) it will copy into memory first, so, be aware that copying very large files from the APK may cause devices to run out of memory. On the HTML5 target, we use the HTML5 Local Storage API for client side saving, and the functions does not support binary file operations, so assumes you are copying a text file.</Description>
			<Parameter Name="fname" Type="String" Optional="false">The name of the file to copy.</Parameter>
			<Parameter Name="newname" Type="String" Optional="false">The name of the new, copied, file.</Parameter>
		</Function>
		<Function Name="file_delete" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>This function will delete the specified file from the system. It should be noted that this function will only delete those files that GameMaker is able to create and parse: ini files, text files and binary files, or those files made to store game created resources like sprites or surfaces. However, it will not delete any other file. The function will also return true if the file has successfully been removed, or false in any other circumstances.</Description>
			<Parameter Name="fname" Type="String" Optional="false">The name of the file to delete.</Parameter>
		</Function>
		<Function Name="file_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will return true if the specified file exists and false if it does not. Note that the function can only be used to check local files, but not any files stored on a remote server.</Description>
			<Parameter Name="fname" Type="String" Optional="false">The name of the file to check for.</Parameter>
		</Function>
		<Function Name="file_find_close" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Must be called after handling files opened using file_find_first() and file_find_next() functions to free memory. The file find functions open handles into the file directory and these take up a minimal amount of memory, which (over time) mounts up. Therefore you should always call this function after you have found the files you require to &quot;close&quot; these handles.</Description>
		</Function>
		<Function Name="file_find_first" Deprecated="false" ReturnType="String" Pure="false">
			<Description>This function will return the name of the first file that satisfies the mask and the attributes. If no such file exists, then an empty string is returned. The mask can contain a path and can contain wildchars, for example &apos;C:\temp\*.doc&apos;. The attributes give the additional files you want to see, so the normal files are always returned when they satisfy the mask. You can add up the following constants to see the type of files you want (if you do not wish to add any attributes, use 0):</Description>
			<Parameter Name="mask" Type="String" Optional="false">The mask to use for searching.</Parameter>
			<Parameter Name="attr" Type="Constant.FileAttribute" Optional="false">The specific file attribute to look for.</Parameter>
		</Function>
		<Function Name="file_find_next" Deprecated="false" ReturnType="String" Pure="false">
			<Description>This function returns the name of the next file that satisfies the previously given mask and the attributes (defined by file_find_first()). If no such file exists, the empty string is returned.</Description>
		</Function>
		<Function Name="file_rename" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>This function will rename the specified file with the specified name. The function will return true if the file has successfully been renamed, or false in any other circumstances.</Description>
			<Parameter Name="oldname" Type="String" Optional="false">The name of the file to change.</Parameter>
			<Parameter Name="newname" Type="String" Optional="false">The new name to give the file.</Parameter>
		</Function>
		<Function Name="get_open_filename" Deprecated="false" ReturnType="String" Pure="false">
			<Description>This function opens a dialogue and asks the player for a filename to open with the given filter. The filter has the form &quot;name1|mask1|name2|mask2|...&quot;, where the mask may contain the different options with a semicolon between them and you can also use a &quot;*&quot; to mean any string. For example: &quot;bitmaps|*.bmp;*.wmf&quot;, would ask the user to select the name of a bitmap file from the system, but only those that have the two specified extensions (bmp and png). this function does not open the file itself! It only returns a string with the full name and path of the file. If the user presses &quot;Cancel&quot; an empty string &quot;&quot; is returned.</Description>
			<Parameter Name="filter" Type="String" Optional="false">The file type filter and/or name.</Parameter>
			<Parameter Name="fname" Type="String" Optional="false">The suggested filename to use.</Parameter>
		</Function>
		<Function Name="get_open_filename_ext" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function opens a dialogue and asks the player for a filename to open with the given filter. The filter has the form &quot;name1|mask1|name2|mask2|...&quot;, where the mask may contain the different options with a semicolon between them and you can also use a &quot;*&quot; to mean any string. For example: &quot;bitmaps|*.bmp;*.wmf&quot;, would ask the user to select the name of a bitmap file from the system, but only those that have the two specified extensions (bmp and png). this function does not open the file itself! It only returns a string with the full name and path of the file. If the user presses &quot;Cancel&quot; an empty string &quot;&quot; is returned. You may also add in a directory to start the search from, and a caption to be shown at the top of the window instead of the default one.</Description>
			<Parameter Name="filter" Type="String" Optional="false">The file type filter and/or name.</Parameter>
			<Parameter Name="fname" Type="String" Optional="false">The suggested filename to use.</Parameter>
			<Parameter Name="directory" Type="String" Optional="false">The directory to start the search from.</Parameter>
			<Parameter Name="caption" Type="String" Optional="false">The caption for the window.</Parameter>
		</Function>
		<Function Name="get_save_filename" Deprecated="false" ReturnType="String" Pure="false">
			<Description>This function opens a dialogue and asks the player for a filename to save to with the given filter. The filter has the form &quot;name1|mask1|name2|mask2|...&quot;, where the mask may contain the different options with a semicolon between them and you can also use a &quot;*&quot; to mean any string. For example: &quot;bitmaps|*.bmp;*.wmf&quot;, would ask the user to select the name of a bitmap file from the system, but only those that have the two specified extensions (bmp and png). this function does not save the file itself! It only returns a string with the full name and path of the file. If the user presses &quot;Cancel&quot; an empty string &quot;&quot; is returned.</Description>
			<Parameter Name="filter" Type="String" Optional="false">The file type filter and/or name.</Parameter>
			<Parameter Name="fname" Type="String" Optional="false">The suggested filename to use.</Parameter>
		</Function>
		<Function Name="get_save_filename_ext" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function opens a dialogue and asks the player for a filename to save to with the given filter. The filter has the form &quot;name1|mask1|name2|mask2|...&quot;, where the mask may contain the different options with a semicolon between them and you can also use a &quot;*&quot; to mean any string. For example: &quot;bitmaps|*.bmp;*.wmf&quot;, would ask the user to select the name of a bitmap file from the system, but only those that have the two specified extensions (bmp and png). this function does not save the file itself! It only returns a string with the full name and path of the file. If the user presses &quot;Cancel&quot; an empty string &quot;&quot; is returned. You may also add in a directory to start the search from, and a caption to be shown at the top of the window instead of the default one.</Description>
			<Parameter Name="filter" Type="String" Optional="false">The file type filter and/or name.</Parameter>
			<Parameter Name="fname" Type="String" Optional="false">The suggested filename to use.</Parameter>
			<Parameter Name="directory" Type="String" Optional="false">The directory to start the search from.</Parameter>
			<Parameter Name="caption" Type="String" Optional="false">The caption for the window.</Parameter>
		</Function>
		<Function Name="ini_close" Deprecated="false" ReturnType="String" Pure="false">
			<Description>This function should be called the moment you are finished reading or writing to any open ini file. If you do not use the function after you have used any of the ini write functions, then nothing will be written to disk, as the file information is held in memory until this function is called, which forces the write. If you try to open an ini without having previously closed another one (or the same one) you will get an error too.</Description>
		</Function>
		<Function Name="ini_key_delete" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can remove the selected key (and its corresponding value) from an ini file.</Description>
			<Parameter Name="section" Type="String" Optional="false">The section to delete a key from.</Parameter>
			<Parameter Name="key" Type="String" Optional="false">The key to delete.</Parameter>
		</Function>
		<Function Name="ini_key_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function checks to see if a key exists in the currently open ini and will return true if it does or false otherwise. This is not a necessary check to prevent errors as, when a key does not exist, reading from a non-existent key will just return a default value. It can be useful to see if an ini file has saved specific data and a few other things, however.</Description>
			<Parameter Name="section" Type="String" Optional="false">The section in the open .ini file to check a key in.</Parameter>
			<Parameter Name="key" Type="String" Optional="false">The key to check for.</Parameter>
		</Function>
		<Function Name="ini_open" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This opens an ini_file for reading and/writing. If the ini_file does not exist at the location you are checking, GameMaker may create one, but only if you write data to it. If you have only read information from the ini file, then the default values for the read function will be returned, but the ini file will not actually be created.</Description>
			<Parameter Name="name" Type="String" Optional="false">The filename for the .ini file.</Parameter>
		</Function>
		<Function Name="ini_open_from_string" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will create an ini file from a string and open it for reading/writing. The string should be correctly formatted as an ini file (ie: with sections, line breaks keys and values) otherwise the ini file will not be created correctly. Note that this ini file is temporary and will be removed from memory the moment it is closed, losing any information that was stored in it, however the ini_close() function returns a string of the full ini file which can then be saved to a server or to disk.</Description>
			<Parameter Name="string" Type="String" Optional="false">The string containing all the ini information.</Parameter>
		</Function>
		<Function Name="ini_read_real" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>You can use this function to read a number from an ini data file. Ini Files are split into sections and then each section is subsequently split into key - value pairs. So a typical ini file would look something like this:</Description>
			<Parameter Name="section" Type="String" Optional="false">The section of the .ini to read from.</Parameter>
			<Parameter Name="key" Type="String" Optional="false">The key within the relevant section of the .ini to read from.</Parameter>
			<Parameter Name="default" Type="Real" Optional="false">The value to return if a value is not found in the defined place (or the .ini file does not exist). Must be a real number.</Parameter>
		</Function>
		<Function Name="ini_read_string" Deprecated="false" ReturnType="String" Pure="true">
			<Description>You can use this function to read a string (text) from an ini data file. Ini Files are split into sections and then each section is subsequently split into key - value pairs. So a typical ini file would look something like this:</Description>
			<Parameter Name="section" Type="String" Optional="false">The section of the .ini to read from.</Parameter>
			<Parameter Name="key" Type="String" Optional="false">The key within the relevant section of the .ini to read from.</Parameter>
			<Parameter Name="default" Type="String" Optional="false">The string to return if a string is not found in the defined place (or the .ini file does not exist). Must be a string.</Parameter>
		</Function>
		<Function Name="ini_section_delete" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can delete a whole section of an ini file, which will also remove all key-value pairs that are associated with it.</Description>
			<Parameter Name="section" Type="String" Optional="false">The section to delete.</Parameter>
		</Function>
		<Function Name="ini_section_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function checks to see if a section exists in the currently open ini and will return true if it does or false otherwise. This is not a necessary check to prevent errors as, when a section does not exist, reading from a non-existent section will just return a default value, however it can be useful to see if an ini file has saved specific data.</Description>
			<Parameter Name="section" Type="String" Optional="false">The section in the open .ini file to check for.</Parameter>
		</Function>
		<Function Name="ini_write_real" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>You can use this function to write a value (numeric) to an ini data file. Ini Files are split into sections and then each section is subsequently split into key - value pairs. So a typical ini file would look something like this:</Description>
			<Parameter Name="section" Type="String" Optional="false">The section of the .ini to write to.</Parameter>
			<Parameter Name="key" Type="String" Optional="false">The key within the relevant section of the .ini to write to.</Parameter>
			<Parameter Name="value" Type="Real" Optional="false">The real value to write to the relevant destination.</Parameter>
		</Function>
		<Function Name="ini_write_string" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>You can use this function to write a string (text) to an ini data file. Ini Files are split into sections and then each section is subsequently split into key - value pairs. So a typical ini file would look something like this:</Description>
			<Parameter Name="section" Type="String" Optional="false">The section of the .ini to write to.</Parameter>
			<Parameter Name="key" Type="String" Optional="false">The key within the relevant section of the .ini to write to.</Parameter>
			<Parameter Name="value" Type="String" Optional="false">The string to write to the relevant destination.</Parameter>
		</Function>
		<Function Name="file_text_close" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Once you have finished working with a given file (whether reading from it or writing to it), you must close the file again, or else you risk losing the information contained within. This also prevents memory leaks and makes sure that you never go over the file limit by having more than 32 files open.</Description>
			<Parameter Name="fileid" Type="Id.TextFile" Optional="false">The id of the file to close.</Parameter>
		</Function>
		<Function Name="file_text_eof" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function returns true when the end of a given opened text file has been reached or false if not.</Description>
			<Parameter Name="fileid" Type="Id.TextFile" Optional="false">The id of the file to check.</Parameter>
		</Function>
		<Function Name="file_text_eoln" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>With this function you can get GameMaker to check the currently opened file to see if the line being read has finished. The function returns true if the end of the line has been reached and false otherwise.</Description>
			<Parameter Name="fileid" Type="Id.TextFile" Optional="false">The id of the file to check.</Parameter>
		</Function>
		<Function Name="file_text_open_append" Deprecated="false" ReturnType="Id.TextFile" Pure="true">
			<Description>This function opens the text file with the indicated filename for writing (if the file does not exist, it is created), returning the unique id of the file that which should be stored in a variable as it will be used for all further actions to do with that file. The position within the file for writing to is set to the last line of text that the file contains. Note that if the file can&apos;t be created (because of an illegal filename, for example) the function will return -1.</Description>
			<Parameter Name="fname" Type="String" Optional="false">The name of the file to append to.</Parameter>
		</Function>
		<Function Name="file_text_open_from_string" Deprecated="false" ReturnType="Id.TextFile" Pure="true">
			<Description>This function will create a text file from a string and open it for reading, returning the file &quot;handle&quot; that should be used in all further file function calls to read from this file. Note that this file is temporary and read only, and as such it will be removed from memory the moment it is closed.</Description>
			<Parameter Name="string" Type="String" Optional="false">The string to create the file from.</Parameter>
		</Function>
		<Function Name="file_text_open_read" Deprecated="false" ReturnType="Id.TextFile" Pure="true">
			<Description>This function opens the text file with the indicated filename for reading only, returning the unique id of the file that which should be stored in a variable as it will be used for all further actions to do with that file. If the file does not exists then the function will return the value -1.</Description>
			<Parameter Name="fname" Type="String" Optional="false">The name of the file to read from.</Parameter>
		</Function>
		<Function Name="file_text_open_write" Deprecated="false" ReturnType="Id.TextFile" Pure="true">
			<Description>This function opens the text file with the indicated filename for writing only (if the file does not exist, it is created), returning the unique id of the file that which should be stored in a variable as it will be used for all further actions to do with that file. Note that if the file can&apos;t be created (because of an illegal filename, for example) the function will return -1.</Description>
			<Parameter Name="fname" Type="String" Optional="false">The name of the file to write to.</Parameter>
		</Function>
		<Function Name="file_text_readln" Deprecated="false" ReturnType="String" Pure="false">
			<Description>With this function you can skip the remainder of the current line from a given opened text file and move to the start of the next one. The function will also return the full line as a string, making it an easy way to read complete &quot;chunks&quot; of data for parsing later.</Description>
			<Parameter Name="fileid" Type="Id.TextFile" Optional="false">The id of the file to read from.</Parameter>
		</Function>
		<Function Name="file_text_read_real" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can read a real number value from a text file and the function returns that value to be used or stored in a variable.</Description>
			<Parameter Name="fileid" Type="Id.TextFile" Optional="false">The id of the file to read from.</Parameter>
		</Function>
		<Function Name="file_text_read_string" Deprecated="false" ReturnType="String" Pure="false">
			<Description>With this function you can read a string from a text file and the function returns that value to be used or stored in a variable.</Description>
			<Parameter Name="fileid" Type="Id.TextFile" Optional="false">The id of the file to read from.</Parameter>
		</Function>
		<Function Name="file_text_writeln" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can write a new line to an opened text file. In this way you can skip lines or write information on a line by line basis (see example code below).</Description>
			<Parameter Name="fileid" Type="Id.TextFile" Optional="false">The id of the file to edit.</Parameter>
		</Function>
		<Function Name="file_text_write_real" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can write a number to the previously opened text file. Note that as the value to be written can be a real number, all decimals will be written with a &quot;.&quot; point as separator. If the file already contains information, this information will be erased and the string will be written at the beginning of the file, unless you have opened the file with the file_text_open_append(). You can also avoid this by using the file_text_readln() function along with the file_text_eof() function to loop through the contents of the file until you get to the end and then start writing.</Description>
			<Parameter Name="fileid" Type="Id.TextFile" Optional="false">The id of the file to edit.</Parameter>
			<Parameter Name="val" Type="Real" Optional="false">The real value to write to the file.</Parameter>
		</Function>
		<Function Name="file_text_write_string" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can write a string to a previously opened text file. If the file already contains information, this information will be erased and the string will be written at the beginning of the file, unless you have opened the file with the file_text_open_append(). You can also avoid this by using the file_text_readln() function along with the file_text_eof() function to loop through the contents of the file until you get to the end and then start writing.</Description>
			<Parameter Name="fileid" Type="Id.TextFile" Optional="false">The id of the file to edit.</Parameter>
			<Parameter Name="str" Type="String" Optional="false">The string to write to the file.</Parameter>
		</Function>
		<Function Name="device_get_tilt_x" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns a value between -1 and 1 depending upon the angle of &quot;tilt&quot; of the device. The actual correlation between degrees of tilt and the value returned depends on the device and OS that it uses, but generally a value of 1 or -1 is the same as +/-90°. The image below shows how each if the available functions relates to the device:</Description>
		</Function>
		<Function Name="device_get_tilt_y" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns a value between -1 and 1 depending upon the angle of &quot;tilt&quot; of the device. The actual correlation between degrees of tilt and the value returned depends on the device and OS that it uses, but generally a value of 1 or -1 is the same as +/-90°. The image below shows how each if the available functions relates to the device:</Description>
		</Function>
		<Function Name="device_get_tilt_z" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns a value between -1 and 1 depending upon the angle of &quot;tilt&quot; of the device. The actual correlation between degrees of tilt and the value returned depends on the device and OS that it uses, but generally a value of 1 or -1 is the same as +/-90°. The image below shows how each if the available functions relates to the device:</Description>
		</Function>
		<Function Name="device_is_keypad_open" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This does a check of the device for a keypad and if one is available it returns true otherwise it returns false. Please note that this function is mainly for use with Android devices</Description>
		</Function>
		<Function Name="device_mouse_check_button" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function returns true or false depending on whether the given mouse button is being held down on the given device. For the mouse button you can supply one of the constants listed on this page.</Description>
			<Parameter Name="device" Type="Real" Optional="false">The device (from 0 - n) that is being checked</Parameter>
			<Parameter Name="button" Type="Constant.MouseButton" Optional="false">The button of the device that is being checked.</Parameter>
		</Function>
		<Function Name="device_mouse_check_button_pressed" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function returns true or false depending on whether the device that you specify has been &quot;touched&quot; (clicked) or not. The device argument refers to the touch number, which can be from 0 to n and the maximum number of touches that can be detected will depend very much on the device being used and the OS it runs (most devices will support at least 4 simultaneous touches). This function is only triggered once by the actual pressing action, and the constants listed on this page can be used to check for the mouse buttons. Note that mb_right will only be detected if a double tap touch is detected and held on the second tap (this behavior can be disabled using the function device_mouse_dbclick_enable()).</Description>
			<Parameter Name="device" Type="Real" Optional="false">The device (from 0 - n) that is being checked.</Parameter>
			<Parameter Name="button" Type="Constant.MouseButton" Optional="false">The button of the device that is being checked.</Parameter>
		</Function>
		<Function Name="device_mouse_check_button_released" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function returns true or false depending on whether the device touch that you specify has been released or not. The device argument refers to the device touch number, which can be from 0 to n and note that the maximum number of touches that can be detected will depend very much on the device being used and the OS it runs (most devices will support at least 4 simultaneous touches). This function is only triggered once by the actual releasing action, and the constants listed on this page can be used to check for the mouse buttons. Note that mb_right will only have been detected if a double tap touch is detected and held on the second tap before release (this behavior can be disabled using the function device_mouse_dbclick_enable()).</Description>
			<Parameter Name="device" Type="Real" Optional="false">The device (from 0 - n) that is being checked.</Parameter>
			<Parameter Name="button" Type="Constant.MouseButton" Optional="false">The button of the device that is being checked.</Parameter>
		</Function>
		<Function Name="device_mouse_dbclick_enable" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>This function can be used to set the device to detect a double tap of the mb_left (left mouse button) as an mb_right (right mouse button) tap or not. By default this is set to true, meaning that every time the user taps the device screen twice quickly and consecutively, the return value is the same as if the right mouse button had been clicked. When this is on, the first tap will be detected as mb_left, and the second as mb_right, so make sure that any code you use takes this into account.</Description>
			<Parameter Name="bool" Type="Bool" Optional="false">Set double-click detection on (true) or off (false).</Parameter>
		</Function>
		<Function Name="device_mouse_raw_x" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the raw x position of a touch on the device. What this means is that it returns the actual device definition of the x position that is being touched, not the GameMaker one, and as such will ignore things like view position and scaling. Note that the maximum number of touches that can be detected will depend very much on the device being used and the OS it runs</Description>
			<Parameter Name="device" Type="Real" Optional="false">The device (from 0 - n) that is being checked.</Parameter>
		</Function>
		<Function Name="device_mouse_raw_y" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns raw y position of the touch on a device. What this means is that it returns the actual device definition of the y position that is being touched, not the GameMaker one, and as such will ignore things like view position and scaling. Note that the maximum number of device touches that can be detected will depend very much on the device being used and the OS it runs</Description>
			<Parameter Name="device" Type="Real" Optional="false">The device (from 0 - n) that is being checked.</Parameter>
		</Function>
		<Function Name="device_mouse_x" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the x position of a touch on the device. If you are running this on a the HTML5 or PC and Mac modules then this value is updated constantly, as long as the device (usually a mouse) is plugged in, however for mobile devices, this will only be updated while the screen is being touched and note that the maximum number of touches that can be detected will depend very much on the device being used and the OS it runs. Also note that on HTML5 only &quot;device 0&quot; will function correctly and other devices may give wrong values.</Description>
			<Parameter Name="device" Type="Real" Optional="false">The device (from 0 - n) that is being checked.</Parameter>
		</Function>
		<Function Name="device_mouse_x_to_gui" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the x position of the touch on the device in relation to the GUI layer. Since the GUI layer can be set to be a different size independently of the screen resolution and the room size, it can sometimes be complicated to get the exact point on the GUI layer that a user has touched the screen. With this function you can get that position based on the actual GUI size, making GUI buttons and HUD elements easier to create and interact with. If you are running this on a the HTML5 or PC and Mac modules then this value is updated constantly, as long as the device (usually a mouse) is plugged in, however for mobile devices, this will only be updated while the screen is being touched, and note that the maximum number of touches that can be detected will depend very much on the device being used and the OS it runs. Also note that on HTML5 only &quot;device 0&quot; will function correctly and other devices may give wrong values.</Description>
			<Parameter Name="device" Type="Real" Optional="false">The device (from 0 - n) that is being checked.</Parameter>
		</Function>
		<Function Name="device_mouse_y" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the y position of a touch on the device. If you are running this on a the HTML5 or PC and Mac modules then this value is updated constantly, as long as the device (usually a mouse) is plugged in, however for mobile devices, this will only be updated while the screen is being touched and note that the maximum number of touches that can be detected will depend very much on the device being used and the OS it runs. Also note that on HTML5 only &quot;device 0&quot; will function correctly and other devices may give wrong values.</Description>
			<Parameter Name="device" Type="Real" Optional="false">The device (from 0 - n) that is being checked.</Parameter>
		</Function>
		<Function Name="device_mouse_y_to_gui" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the y position of the touch on the device in relation to the GUI layer. Since the GUI layer can be set to be a different size independently of the screen resolution and the room size, it can sometimes be complicated to get the exact point on the GUI layer that a user has touched the screen. With this function you can get that position based on the actual GUI size, making GUI buttons and HUD elements easier to create and interact with. If you are running this on a the HTML5 or PC and Mac modules then this value is updated constantly, as long as the device (usually a mouse) is plugged in, however for mobile devices, this will only be updated while the screen is being touched, and note that the maximum number of touches that can be detected will depend very much on the device being used and the OS it runs. Also note that on HTML5 only &quot;device 0&quot; will function correctly and other devices may give wrong values.</Description>
			<Parameter Name="device" Type="Real" Optional="false">The device (from 0 - n) that is being checked.</Parameter>
		</Function>
		<Function Name="gamepad_axis_count" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the number of &quot;axis&quot; controls on the device being checked. These controls are the analogue direction &quot;thumbsticks&quot; on most controllers.</Description>
			<Parameter Name="device" Type="Real" Optional="false">Which gamepad device &quot;slot&quot; to check.</Parameter>
		</Function>
		<Function Name="gamepad_axis_value" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>You can use this function to get the value of the different axes from a given gamepad slot. You supply the gamepad slot index to check, along with either an axis index constant (as listed here), or an integer value between 0 and gamepad_axis_count()-1. The returned value will be between -1 and 1 for each of the available horizontal and vertical axes.</Description>
			<Parameter Name="device" Type="Real" Optional="false">Which gamepad device &quot;slot&quot; to check.</Parameter>
			<Parameter Name="axisindex" Type="Constant.GamepadAxis" Optional="false">The axis index to check (see the constants list).</Parameter>
		</Function>
		<Function Name="gamepad_button_check" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will return true or false depending on whether the given gamepad button is detected as being held down or not. If you are checking an analogue button, then the check will take into consideration the threshold setting and only return true while the raw input value is over the given threshold (you can get this raw value using the function gamepad_button_value()).</Description>
			<Parameter Name="device" Type="Real" Optional="false">Which gamepad device &quot;slot&quot; to check.</Parameter>
			<Parameter Name="button" Type="Constant.GamepadButton" Optional="false">Which gamepad button constant to check for.</Parameter>
		</Function>
		<Function Name="gamepad_button_check_pressed" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will return true or false depending on whether the given gamepad button is detected as having been pressed or not. Note that this function will only trigger once for the button the first time it is pressed. For it to trigger again the button must first be released and then re-pressed. If you need to check a continuous press of the button you should be using the function gamepad_button_check().</Description>
			<Parameter Name="device" Type="Real" Optional="false">Which gamepad device &quot;slot&quot; to check.</Parameter>
			<Parameter Name="button" Type="Constant.GamepadButton" Optional="false">Which gamepad button constant to check for.</Parameter>
		</Function>
		<Function Name="gamepad_button_check_released" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will return true or false depending on whether the given gamepad button is detected as having been released or not. Note that this function will only trigger once for the button the moment it has been released. For it to trigger again the button must first be pressed and then released once more. If you are checking an analogue button, then the check will take into consideration the threshold setting and only return true when the raw input value goes under the given threshold (you can get this raw value using the function gamepad_button_value()).</Description>
			<Parameter Name="device" Type="Real" Optional="false">Which gamepad device &quot;slot&quot; to check.</Parameter>
			<Parameter Name="button" Type="Constant.GamepadButton" Optional="false">Which gamepad button constant to check for.</Parameter>
		</Function>
		<Function Name="gamepad_button_count" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the total number of buttons available for the gamepad connected to the given device &quot;slot&quot;.</Description>
			<Parameter Name="device" Type="Real" Optional="false">Which gamepad device &quot;slot&quot; to check.</Parameter>
		</Function>
		<Function Name="gamepad_button_value" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the current value of an analogue button, from 0 to 1, where 0 is no pressure and 1 is full pressure. You supply the gamepad slot index to check, along with either a button constant (as listed here), or an integer value between 0 and gamepad_button_count() -1.</Description>
			<Parameter Name="device" Type="Real" Optional="false">Which gamepad device &quot;slot&quot; to check.</Parameter>
			<Parameter Name="button" Type="Constant.GamepadButton" Optional="false">Which gamepad button constant to check for.</Parameter>
		</Function>
		<Function Name="gamepad_get_axis_deadzone" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to get the &quot;dead zone&quot; value of the joystick axis. You specify the device slot to get, and the function will return a value between 0 to 1, where value reflects the threshold under which the joystick axis is considered to be at 0.</Description>
			<Parameter Name="device" Type="Real" Optional="false">Which gamepad device &quot;slot&quot; to check.</Parameter>
		</Function>
		<Function Name="gamepad_get_button_threshold" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to detect the current threshold setting of the analogue buttons for a given device. The default threshold for all analogue buttons is 0.5, with the range being from 0 to 1. The threshold defines at what point the button is considered as being &quot;pressed&quot; for games that require them to act as a digital button.</Description>
			<Parameter Name="device" Type="Real" Optional="false">Which gamepad device &quot;slot&quot; to check.</Parameter>
		</Function>
		<Function Name="gamepad_get_description" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function will return a string with the description of the given gamepad, for example, a PS3 controller may return a string similar to &quot;PLAYSTATION(R)3 Controller&quot;, or an XBox360 controller could return &quot;Xbox 360 Controller (XInput STANDARD GAMEPAD)&quot;. This string is hardware dependant and the returned value will depend on the gamepad plugged into the device &quot;slot&quot; that is being checked.</Description>
			<Parameter Name="device" Type="Real" Optional="false">Which gamepad &quot;slot&quot; to get the name of.</Parameter>
		</Function>
		<Function Name="gamepad_get_device_count" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will tell you one of two things; Either the number of game pads connected, or the number of available &quot;slots&quot; for game pads to be connected to. The actual return value will depend on the platform and the internal configuration of that platform and as such this function should be used in conjunction with the function gamepad_is_connected() to make sure of the exact number of pads connected at any time.</Description>
		</Function>
		<Function Name="gamepad_get_guid" Deprecated="false" ReturnType="String" Pure="true">
			<Description>With this function you can retrieve the GUID for the gamepad connected to the given slot index. You supply the gamepad slot to check (from 0 - 11), and the function will return one of the following strings:</Description>
			<Parameter Name="index" Type="Real" Optional="false">Which gamepad &quot;slot&quot; index to check</Parameter>
		</Function>
		<Function Name="gamepad_get_mapping" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function can be used to retrieve the mapping string for the gamepad. This string will be either:</Description>
			<Parameter Name="index" Type="Real" Optional="false">Which gamepad index &quot;slot&quot; to get the mapping from.</Parameter>
		</Function>
		<Function Name="gamepad_get_option" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to retrieve the given option value. You supply the gamepad &quot;slot&quot; to check, as well as the option string and the function will return the associated value. The available option string will depend on the platform that the project is being run on, as listed below:</Description>
			<Parameter Name="device" Type="Real" Optional="false">Which gamepad device &quot;slot&quot; to check.</Parameter>
			<Parameter Name="option_name" Type="String" Optional="false">The name of the option to get the value from (a string, see the table above)</Parameter>
		</Function>
		<Function Name="gamepad_hat_count" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the total number of hats available for the gamepad connected to the given device &quot;slot&quot;. Hats generally refer to up/down/left/right buttons, and note that on the Windows target, hats are only available on DirectInput controllers (so, from slot 4 upwards).</Description>
			<Parameter Name="device" Type="Real" Optional="false">Which gamepad device &quot;slot&quot; to check.</Parameter>
		</Function>
		<Function Name="gamepad_hat_value" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the current value of a gamepad &quot;hat&quot;. Each hat value is a bit-mask for the different directions where:</Description>
			<Parameter Name="device" Type="Real" Optional="false">Which gamepad device &quot;slot&quot; to check.</Parameter>
			<Parameter Name="hatindex" Type="Real" Optional="false">Which gamepad hat (or hats) to check for.</Parameter>
		</Function>
		<Function Name="gamepad_is_connected" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will return whether a gamepad is connected to the given &quot;slot&quot; (returns true) or not (returns false). You would normally use this function in conjunction with the gamepad_get_device_count() function to get the correct number of available game pads and/or gamepad &quot;slots&quot;. Note that there may be a slight delay between the user connecting the gamepad and GameMaker detecting it as being connected (this is especially the case when dealing with bluetooth connected controllers).</Description>
			<Parameter Name="device" Type="Real" Optional="false">Which gamepad &quot;slot&quot; to check.</Parameter>
		</Function>
		<Function Name="gamepad_is_supported" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can find out whether the target platform supports game pads (returns true) or not (returns false).</Description>
		</Function>
		<Function Name="gamepad_remove_mapping" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to remove the current device mapping from the given gamepad slot index. Once called, the slot index will need to be remapped using the gamepad_test_mapping() function if you want to be able to be able to use the gamepad constants to detect input correctly (direct input can always be retrieved using the gamepad_axis/button/hat_count() and gamepad_axis/button/hat_value() functions together).</Description>
			<Parameter Name="index" Type="Real" Optional="false">Which gamepad index &quot;slot&quot; to remove the mapping from.</Parameter>
		</Function>
		<Function Name="gamepad_set_axis_deadzone" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set the &quot;dead zone&quot; of the joystick axis. You specify the device slot to set, and then set a value from 0 to 1 and if the input amount is lower than the given value, the joystick axis is considered to be at 0. Note that this is a global setting that will affect all axis of all joysticks connected to the device slot specified.</Description>
			<Parameter Name="device" Type="Real" Optional="false">Which gamepad device &quot;slot&quot; to check.</Parameter>
			<Parameter Name="deadzone" Type="Real" Optional="false">The dead zone value from 0 to 1.</Parameter>
		</Function>
		<Function Name="gamepad_set_button_threshold" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set the current threshold setting of the analogue buttons for a given device. The default threshold for all analogue buttons is 0.5, with the range being from 0 to 1. The threshold defines at what point the button is considered as being &quot;pressed&quot; for games that require them to act as a digital button. Note that this function will affect the check, pressed and released states for analogue buttons, but will not affect the value returned by the function gamepad_button_check(), which will always return the raw value for the button.</Description>
			<Parameter Name="device" Type="Real" Optional="false">Which gamepad device &quot;slot&quot; to check.</Parameter>
			<Parameter Name="threshold" Type="Real" Optional="false">The new threshold value (from 0 - 1, default 0.5).</Parameter>
		</Function>
		<Function Name="gamepad_set_colour" Deprecated="false" ReturnType="Undefined" Locale="GB" Pure="false">
			<Description>This function can be used to set the colour of the LEDs within a PlayStation controller. You specify the device slot to set, and then give a colour, which can be any of the colour constants or a colour value created using the specific colour functions or a HEX value(like $FFFFFFF).</Description>
			<Parameter Name="device" Type="Real" Optional="false">Which gamepad device &quot;slot&quot; to set.</Parameter>
			<Parameter Name="colour" Type="Constant.Color" Optional="false">The colour to use.</Parameter>
		</Function>
		<Function Name="gamepad_set_option" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set any of the available gamepad options. You supply the gamepad &quot;slot&quot; to set the option on, as well as the option string to set and the value to use. The available option string will depend on the platform that the project is being run on, as listed below:</Description>
			<Parameter Name="device" Type="Real" Optional="false">Which gamepad device &quot;slot&quot; to set.</Parameter>
			<Parameter Name="option_name" Type="String" Optional="false">The name of the option to set (a string, see the table above)</Parameter>
			<Parameter Name="value" Type="Any" Optional="false">The value to set the option to (can be boolean, real, integer or string - see the table above)</Parameter>
		</Function>
		<Function Name="gamepad_set_vibration" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the vibration of the gamepad motors, with either motor using a value from 0 (no vibration) to 1 (full vibration). Note that there is no time limit on this function, so you will need to use a variable or an alarm to switch off the vibration (set motors to 0) after a given time has passed otherwise the gamepad will continue to vibrate indefinitely.</Description>
			<Parameter Name="device" Type="Real" Optional="false">Which gamepad device &quot;slot&quot; to check.</Parameter>
			<Parameter Name="left_motor" Type="Real" Optional="false">The amount of vibration from the left motor from 0 to 1.</Parameter>
			<Parameter Name="right_motor" Type="Real" Optional="false">The amount of vibration from the right motor from 0 to 1.</Parameter>
		</Function>
		<Function Name="gamepad_test_mapping" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function can be used to set the gamepad mapping on those targets that permit it. You supply the &quot;slot&quot; index for the gamepad to set, and then the map string, which should have been created using the SDL format with the following fields:</Description>
			<Parameter Name="index" Type="Real" Optional="false">Which gamepad index &quot;slot&quot; to set.</Parameter>
			<Parameter Name="value" Type="String" Optional="false">The map string to use (see the description for more information).</Parameter>
		</Function>
		<Function Name="gesture_double_tap_distance" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function is used to set the distance within which you have to touch/click the screen again after a single tap in order to trigger a Double Tap Gesture. The distance is measured in inches and has a default value of 0.1.</Description>
			<Parameter Name="distance" Type="Real" Optional="false">The distance (in inches) to set for double tap gesture event detection.</Parameter>
		</Function>
		<Function Name="gesture_double_tap_time" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function is used to set the time it takes between two touches/clicks to trigger a Double Tap Gesture event. The time is measured in seconds and has a default value of 0.16.</Description>
			<Parameter Name="time" Type="Real" Optional="false">The time (in seconds) to set for double tap gesture event detection.</Parameter>
		</Function>
		<Function Name="gesture_drag_distance" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function is used to set the distance it takes for a Dragging Gesture event to be triggered by the movement of a touch or click. The distance is measured in inches and has a default value of 0.1.</Description>
			<Parameter Name="distance" Type="Real" Optional="false">The distance (in inches) to set for drag gesture event detection.</Parameter>
		</Function>
		<Function Name="gesture_drag_time" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function is used to set the time it takes for a Drag Gesture event to be triggered by a touch or click. This time will also affect how the Tap Event is triggered as a touch/click and release before this time is up will be considered a Tap. The time is measured in seconds and has a default value of 0.16.</Description>
			<Parameter Name="time" Type="Real" Optional="false">The time (in seconds) to set for drag gesture event detection.</Parameter>
		</Function>
		<Function Name="gesture_flick_speed" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function is used to set the speed required for a Flick Gesture event to be triggered when a touch or click is released. The speed is measured in inches per second and has a default value of 2.0.</Description>
			<Parameter Name="speed" Type="Real" Optional="false">The speed (in inches per second) to set for flick gesture event detection.</Parameter>
		</Function>
		<Function Name="gesture_get_double_tap_distance" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function is used to get the distance within which you have to touch/click the screen again after a single tap in order to trigger a Double Tap Gesture. The distance is measured in inches and has a default value of 0.1.</Description>
		</Function>
		<Function Name="gesture_get_double_tap_time" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function is used to get the time it takes between two touches/clicks to trigger a Double Tap Gesture event. The time is measured in seconds and has a default value of 0.16.</Description>
		</Function>
		<Function Name="gesture_get_drag_distance" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function is used to get the distance it takes for a Dragging Gesture event to be triggered by the movement of a touch or click. The distance is measured in inches and has a default value of 0.1.</Description>
		</Function>
		<Function Name="gesture_get_drag_time" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function is used to get the time it takes for a Drag Start Gesture event to be triggered by a touch or click. This time will also affect how the Tap Event is triggered as a touch/click and release before this time is up will be considered a Tap. The time is measured in seconds and has a default value of 0.16.</Description>
		</Function>
		<Function Name="gesture_get_flick_speed" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function is used to get the speed required for a Flick Gesture event to be triggered when a touch or click is released. The speed is measured in inches per second and has a default value of 2.0.</Description>
		</Function>
		<Function Name="gesture_get_pinch_angle_away" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function is used to get the angle within which a touch must be moving away from another touch before a Pinch Out Gesture may potentially be started. The angle is measured in degrees and has a default value of 45°.</Description>
		</Function>
		<Function Name="gesture_get_pinch_angle_towards" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function is used to get the angle within which a touch must be moving towards another touch before a Pinch In Gesture may potentially be started. The angle is measured in degrees and has a default value of 45°.</Description>
		</Function>
		<Function Name="gesture_get_pinch_distance" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function is used to get the distance within which you have to touch/click the screen and move with two fingers before you trigger a Pinch Gesture. The distance is measured in inches and has a default value of 0.1.</Description>
		</Function>
		<Function Name="gesture_get_rotate_time" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function is used to get the angle which a pair of touches must exceed in order to trigger a Rotate Start Gesture. The angle is measured in degrees and has a default value of 5°.</Description>
		</Function>
		<Function Name="gesture_get_tap_count" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function is used to check whether tap counting is enabled or disabled. The function will return true if it is enabled, and false otherwise and you can enable or disable tap counting using the function gesture_tap_count(). When enabled, each tap event will have an additional &quot;tapcount&quot; DS map entry which will have registered the number of taps, and when enabled it means that all tap events will be triggered, ie: two taps will trigger both the single tap event and the double tap event, with the single tap event tap count being 1 and the double tap event tap count being 2. The tap count value will be reset to 0 after the time set for a double-tap detection has passed (see the function gesture_double_tap_time()). If tap counting is disabled, then the initial tap won&apos;t be registered until the double-tap time has passed and no second tap has been detected. Note that this is enabled by default.</Description>
		</Function>
		<Function Name="gesture_pinch_angle_away" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>This function is used to set the angle within which a touch must be moving away from another touch before a Pinch Out Gesture may potentially be started. The angle is measured in degrees and has a default value of 45°.</Description>
			<Parameter Name="angle" Type="Undefined" Optional="false" />
		</Function>
		<Function Name="gesture_pinch_angle_towards" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>This function is used to set the angle within which a touch must be moving towards another touch before a Pinch In Gesture may potentially be started. The angle is measured in degrees and has a default value of 45°.</Description>
			<Parameter Name="angle" Type="Undefined" Optional="false" />
		</Function>
		<Function Name="gesture_pinch_distance" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function is used to set the distance within which you have to touch/click the screen and move with two fingers before you trigger a Pinch Gesture. The distance is measured in inches and has a default value of 0.1.</Description>
			<Parameter Name="distance" Type="Undefined" Optional="false" />
		</Function>
		<Function Name="gesture_rotate_angle" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>This function is used to set the angle which a pair of touches must exceed in order to trigger a Rotate Start Gesture. The angle is measured in degrees and has a default value of 5°.</Description>
			<Parameter Name="angle" Type="Undefined" Optional="false" />
		</Function>
		<Function Name="gesture_rotate_time" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>This function is used to set the time within which a pair of touches must be rotating in a consistent direction for a Rotate Start Gesture to be triggered. The time is measured in seconds and has a default value of 0.16s.</Description>
			<Parameter Name="time" Type="Undefined" Optional="false" />
		</Function>
		<Function Name="gesture_tap_count" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function is used to set whether tap counting is enabled or disabled. When set to true tap counting is enabled, and when set to false it is disabled, although you can check which state it is in using the function gesture_get_tap_count(). When enabled, each tap event will have an additional &quot;tapcount&quot; DS map entry which will have registered the number of taps, and when enabled it means that all tap events will be triggered, ie: two taps will trigger both the single tap event and the double tap event, with the single tap event tap count being 1 and the double tap event tap count being 2. The tap count value will be reset to 0 after the time set for a double-tap detection has passed (see the function gesture_double_tap_time()). If tap counting is disabled, then the initial tap won&apos;t be registered until the double-tap time has passed and no second tap has been detected. Note that this is enabled by default.</Description>
			<Parameter Name="enable" Type="Bool" Optional="false">Enable (set to true) or disable (set to false) tap counting.</Parameter>
		</Function>
		<Function Name="io_clear" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will clear the current keyboard and mouse states. Note that what happens in the next step after calling this function will depend on what is being checked and the platform it is being checked on. With mouse input, the mouse button will have to be released and pressed again for any further input to be detected, but with the keyboard it&apos;s not quite that simple. In general, the keyboard will be cleared only for that step but the next step will again detect the key, however this may not be the same across all platforms and keyboards, and in some cases the function may act like it does for the mouse and require the key to be lifted and pressed again.</Description>
		</Function>
		<Function Name="keyboard_check" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check to see if a key is held down or not. Unlike the keyboard_check_pressed() or keyboard_check_released() functions which are only triggered once when the key is pressed or released, this function is triggered every step that the key is held down for. The function will take a keycode value as returned by the function ord() (only capital letters from A-Z or numbers from 0-9), or any of the vk_* constants listed on the main Keyboard Input page.</Description>
			<Parameter Name="key" Type="Constant.VirtualKey,Real" Optional="false">The key to check the down state of.</Parameter>
		</Function>
		<Function Name="keyboard_check_direct" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will return true if the key with the particular keycode is pressed, or false if it is not, by checking the hardware directly. It allows for a few more checks, in particular you can use keycodes vk_lshift, vk_lcontrol, vk_lalt, vk_rshift, vk_rcontrol and vk_ralt to check whether the left or right shift, control or alt key is pressed. The function will take a keycode value as returned by the function ord() (only capital letters from A-Z or numbers from 0-9), or any of the vk_* constants listed on the main Keyboard Input page.</Description>
			<Parameter Name="key" Type="Constant.VirtualKey,Real" Optional="false">The key to check the down state of.</Parameter>
		</Function>
		<Function Name="keyboard_check_pressed" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check to see if a key has been pressed or not. Unlike the keyboard_check() function, this function will only run once for every time the key is pressed down, so for it to trigger again, the key must be first released and then pressed again. The function will take a keycode value as returned by the function ord() (only capital letters from A-Z or numbers from 0-9), or any of the vk_* constants listed on the main Keyboard Input page.</Description>
			<Parameter Name="key" Type="Constant.VirtualKey,Real" Optional="false">The key to check the pressed state of.</Parameter>
		</Function>
		<Function Name="keyboard_check_released" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check to see if a key has been released or not. Unlike the keyboard_check() function, this function will only run once for every time the key is lifted, so for it to trigger again, the key must be first pressed and then released again. The function will take a keycode value as returned by the function ord() (only capital letters from A-Z or numbers from 0-9), or any of the vk_* constants listed on the main Keyboard Input page.</Description>
			<Parameter Name="key" Type="Constant.VirtualKey,Real" Optional="false">The key to check the released state of.</Parameter>
		</Function>
		<Function Name="keyboard_clear" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can clear the current keyboard state, which essentially means that if the key is being held down, it will no longer be recognised until it is released again (which won&apos;t trigger the Keyboard Key Released event either on this occasion) and pressed again. The function will take a keycode value as returned by the function ord() (only capital letters from A-Z or numbers from 0-9), or any of the vk_* constants listed on the main Keyboard Input page.</Description>
			<Parameter Name="key" Type="Constant.VirtualKey,Real" Optional="false">The key to clear.</Parameter>
		</Function>
		<Function Name="keyboard_get_map" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Sometimes you may wish to get the ascii code for a mapped key (to see if it is already mapped, for example) which is what this function returns. The function will take a keycode value as returned by the function ord() (only capital letters from A-Z or numbers from 0-9), or any of the vk_* constants listed on the main Keyboard Input page.</Description>
			<Parameter Name="key" Type="Constant.VirtualKey,Real" Optional="false">This is the key that you wish to get the mapped value from</Parameter>
		</Function>
		<Function Name="keyboard_get_numlock" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>You can use this function to find the status of the keypad number lock with true being returned for on, and false returned for off.</Description>
		</Function>
		<Function Name="keyboard_key_press" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can simulate the press of any key on the keyboard. When used, the key will be flagged as being pressed until the corresponding release function is called (see keyboard_key_release()). The function will take a keycode value as returned by the function ord() (only capital letters from A-Z or numbers from 0-9), or any of the vk_* constants listed on the main Keyboard Input page.</Description>
			<Parameter Name="key" Type="Constant.VirtualKey,Real" Optional="false">The key to simulate a press of.</Parameter>
		</Function>
		<Function Name="keyboard_key_release" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can simulate the release of any key on the keyboard. The function will take a keycode value as returned by the function ord() (only capital letters from A-Z or numbers from 0-9), or any of the vk_* constants listed on the main Keyboard Input page.</Description>
			<Parameter Name="key" Type="Constant.VirtualKey,Real" Optional="false">The key to simulate a release of.</Parameter>
		</Function>
		<Function Name="keyboard_set_map" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>Sometimes when making a game you may wish one key to do the same as another. For example many people use the keys WASD for movement, but then many people also use the arrow keys! So, what to do? Well, you could code the movement system twice, but that is a bit complicated and thankfully redundant as this function permits you to &quot;map&quot; one key to another and so any input from either key will be interpreted as the same. To do this you choose a key that you want to map (key2 - this will be the key that you write the code for) and a key that you want it to be mapped to (key1). After that, keypresses to either key will be interpreted by GameMaker as coming from key2. You can also use this function to design a system where the user can define their own keys for playing by simply mapping the user input key to the key that you have coded into the game.</Description>
			<Parameter Name="key1" Type="Constant.VirtualKey,Real" Optional="false">This is the key that key1 is to be mapped to</Parameter>
			<Parameter Name="key2" Type="Constant.VirtualKey,Real" Optional="false">This is the key that is to be mapped</Parameter>
		</Function>
		<Function Name="keyboard_set_numlock" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>You can use this function to switch the keypad number-lock on or off (set to true for on, and false for off).</Description>
			<Parameter Name="value" Type="Bool" Optional="false">Set this to true for &quot;on&quot; and false for &quot;off&quot;</Parameter>
		</Function>
		<Function Name="keyboard_unset_map" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can clear all re-mapped keys so that they return to their default state, ie: all keys to map to themselves.</Description>
		</Function>
		<Function Name="mouse_check_button" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will return true if the mouse button being checked is held down or false if it is not. You supply the mouse button to check from one of the following constants:</Description>
			<Parameter Name="numb" Type="Constant.MouseButton" Optional="false">Which mouse button constant to check for.</Parameter>
		</Function>
		<Function Name="mouse_check_button_pressed" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will return true if the mouse button being checked has been pressed or false if it has not. This function will only be triggered once for any mouse button when it is first pressed and to trigger it again the button will need to have been released and pressed again. Note that it will be considered triggered for the duration of the step, and for all instances that have any mouse events or that use this same function.</Description>
			<Parameter Name="numb" Type="Constant.MouseButton" Optional="false">Which mouse button constant to check for.</Parameter>
		</Function>
		<Function Name="mouse_check_button_released" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will return true if the mouse button being checked has been released or false if it has not. This function will only be triggered once for any mouse button when it is released and to trigger it again the button will need to have been pressed and released again. You supply the mouse button to check from one of the following constants:</Description>
			<Parameter Name="numb" Type="Constant.MouseButton" Optional="false">Which mouse button constant to check for.</Parameter>
		</Function>
		<Function Name="mouse_clear" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>This function will clear the current state of the given mouse button. This means that checks for it being held down will not return true until the player releases the button and presses it again (but the release state will still be detected if the clear is done while the mouse button is being held down).</Description>
			<Parameter Name="button" Type="Constant.MouseButton" Optional="false">Which mouse button constant to check for.</Parameter>
		</Function>
		<Function Name="mouse_wheel_down" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function returns true if the mouse wheel is being rotated downwards and false otherwise.</Description>
		</Function>
		<Function Name="mouse_wheel_up" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function returns true if the mouse wheel is being rotated upwards and false otherwise.</Description>
		</Function>
		<Function Name="keyboard_virtual_height" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the current height in pixels of the virtual keyboard, based on the size of the display. If the keyboard is not visible, 0 will be returned.</Description>
		</Function>
		<Function Name="keyboard_virtual_hide" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to hide the virtual keyboard on the device running the game. Calling this function will generate a System Asynchronous Event, in which the async_load DS map will be populated with the following key/value pairs:</Description>
		</Function>
		<Function Name="keyboard_virtual_show" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to show the virtual keyboard on the device running the game. When you call this function you need to provide one of the following constants for each of the first three arguments:</Description>
			<Parameter Name="keyboard_type" Type="Constant.VirtualKeyboardType" Optional="false">Determines the keyset available on the virtual keyboard.</Parameter>
			<Parameter Name="return_key_type" Type="Constant.VirtualKeyboardReturnType" Optional="false">Determines what is shown on the return/action key of the virtual keyboard.</Parameter>
			<Parameter Name="autocapitalization_type" Type="Constant.VirtualKeyboardAutoCapitalizeType" Optional="false">Determines how/if the words typed via the virtual keyboard will be autocapitalized.</Parameter>
			<Parameter Name="predictive_text_enabled" Type="Bool" Optional="false">Set to true/false to enable/disable predictive text input.</Parameter>
		</Function>
		<Function Name="keyboard_virtual_status" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function can be used to get the status of the virtual keyboard on the device running the game. The function will return true if the OS virtual keyboard is visible/being shown or false if it is hidden/hiding.</Description>
		</Function>
		<Function Name="virtual_key_add" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>This function enables you to map &quot;touches&quot; of a screen area to keyboard events. This means that once you have assigned an area to a virtual key, all touches on that area will trigger the keyboard event corresponding to the key you have mapped to the area. You can assign each virtual key you define to a variable too, which can then be used in the further virtual key functions to show, hide and delete them. These keys are assigned on a per room basis and will be automatically removed by GameMaker when changing rooms.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate (left side) of the virtual key on the screen</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate (top side) of the virtual key on the screen</Parameter>
			<Parameter Name="w" Type="Real" Optional="false">The width of the virtual key</Parameter>
			<Parameter Name="h" Type="Real" Optional="false">The height of the virtual key</Parameter>
			<Parameter Name="keycode" Type="Real" Optional="false">Which keyboard key event should be triggered by touching this area</Parameter>
		</Function>
		<Function Name="virtual_key_delete" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>If your game has different rooms or instances to control menus and game-play and other things, then it is probable that you will need to change the position and key maps of your virtual keys at some point. For that you can use this function to delete the old ones before creating the new ones (if necessary). The function requires that you supply the ID of the virtual key to delete - as returned by virtual_key_add().</Description>
			<Parameter Name="index" Type="Real" Optional="false">The index of the virtual key to delete.</Parameter>
		</Function>
		<Function Name="virtual_key_hide" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Once you have created your virtual key for your devices, you may need to debug and test that it is correctly positioned and working properly and for that you would call the function virtual_key_show(). However, you may need to toggle this view on and off, so you can also hide the virtual key with this function, using the index of the virtual key that you want to hide (previously created and stored using virtual_key_add()). Once you are happy with things it is recommended that you create and place your own graphic in its area.</Description>
			<Parameter Name="index" Type="Real" Optional="false">The index of the virtual key to hide.</Parameter>
		</Function>
		<Function Name="virtual_key_show" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Once you have created your virtual key for your devices, you may need to debug and test that it is correctly positioned and working properly. For that you would call this function, using the index of the virtual key that you want to see (previously created and stored using virtual_key_add()) which will draw a coloured rectangle to represent the key on the screen. Once you are happy with things it is recommended that you create and place your own graphic in its area.</Description>
			<Parameter Name="index" Type="Real" Optional="false">The index of the virtual key to show.</Parameter>
		</Function>
		<Function Name="gc_collect" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can trigger the garbage collector, forcing it to run at the end of the current frame (step). It is worth noting that the garbage collector does not need to be active for this to work. Calling this function after disabling the garbage collector (using the function gc_enable()) will enable the garbage collector for one frame in which all objects that have been flagged for collection will be removed from memory before the garbage collector is disabled again.</Description>
		</Function>
		<Function Name="gc_enable" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can enable or disable the garbage collector. Calling the function with true as the argument enables it and using false disables it (not recommended). It is enabled by default.</Description>
			<Parameter Name="enable" Type="Bool" Optional="false">enable (true) or disable (false) the garbage collector.</Parameter>
		</Function>
		<Function Name="gc_get_stats" Deprecated="false" ReturnType="Struct.GCStats" Pure="true">
			<Description>With this function you can retrieve information about the current state of the garbage collector. The function will return a struct which will have the following member variables (note that &quot;objects&quot; here refers to anything that can be garbage collected and not general object instances as defined in the Asset Browser):</Description>
		</Function>
		<Function Name="gc_get_target_frame_time" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can retrieve the current target frame value for the garbage collector. The value returned is in microseconds (where 1,000,000 microseconds equals one second) and the default target frame time is 100 microseconds. If you wish to change this value then you should use the function gc_target_frame_time().</Description>
		</Function>
		<Function Name="gc_is_enabled" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check to see if the garbage collector is enabled or not. The function will return true if it is enabled or false otherwise.</Description>
		</Function>
		<Function Name="gc_target_frame_time" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can indicate to the garbage collector that it shoulde aim to spend no more than the time specified running each frame. The function takes a time value specified in microseconds (where 1,000,000 microseconds equals one second) and the default target frame time is 100 microseconds.</Description>
			<Parameter Name="time" Type="Real" Optional="false">The target time - in microseconds -  that the garbage collector should work each frame</Parameter>
		</Function>
		<Function Name="weak_ref_create" Deprecated="false" ReturnType="Struct.WeakRef" Pure="false">
			<Description>With this function you can check the weak reference to a struct to see if it is still &quot;alive&quot; or not. You supply the weak reference to check (as returned by the function weak_ref_create()), and the function will return true if the struct is still being referenced somewhere or false if it&apos;s not and has been garbage collected. Note that if you supply a value that is not a weak reference, the function will return undefined.</Description>
			<Parameter Name="struct_to_track" Type="Struct" Optional="false">The struct that you want to create a weak reference for</Parameter>
		</Function>
		<Function Name="weak_ref_any_alive" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check the weak reference to various structs to see if it they are still &quot;alive&quot; or not. You supply an array of weak references to check (each weak reference should have been created using the function weak_ref_create()), and the function will return true if any of the structs are still being referenced somewhere or false if they are not and have been garbage collected. Note that if you supply an array where any of the values are not a weak references, the function will return undefined.</Description>
			<Parameter Name="weak_ref" Type="Array[Struct.WeakRef]" Optional="false">The weak reference to the struct you want to check.</Parameter>
			<Parameter Name="index" Type="Real" Optional="true">OPTIONAL! The index into the array to start checking from</Parameter>
			<Parameter Name="length" Type="Real" Optional="true">OPTIONAL! The number of positions from the given index to check</Parameter>
		</Function>
		<Function Name="game_end" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can end the game (and the Game End Event will be triggered). This will not happen instantaneously, but rather at the end of the current step, so any code you have in the same step after this function has been called will still run. Please note that this function has the following restrictions:</Description>
			<Parameter Name="return_code" Type="Real" Optional="true">The return code of the application, will defaul to 0.</Parameter>
		</Function>
		<Function Name="game_get_speed" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to get the game speed as either the number of game frames to run per second or as the number of micro seconds per game frame. Note that this is not the actual running speed FPS value (for that use the fps_real variable) but rather the number of game frames (FPS) that the game will attempt to maintain each second, or the length of each game frame in microseconds that the game will try to maintain (MPF). When you use this function you need to give one of the following constants which will determine the type of the return value:</Description>
			<Parameter Name="type" Type="Constant.GameSpeed" Optional="false">The type of method used to get the game speed (see the constants above).</Parameter>
		</Function>
		<Function Name="game_load" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can load a game that has been previously saved using game_save(). Note that it will restore the version of the game that was used to create the save, so any updates made after it will not be visible. For more info, read the page on game_save().</Description>
			<Parameter Name="filename" Type="String" Optional="false">The name of the file to load.</Parameter>
		</Function>
		<Function Name="game_load_buffer" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can load a game state that has been saved previously. The game is loaded from a previously created &quot;grow&quot; buffer (see Buffers) and the buffer must have had a game state saved to it using game_save_buffer() function.</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The buffer id to load from.</Parameter>
		</Function>
		<Function Name="game_restart" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can restart the game. This is essentially the same as running the game for the first time and so the Game Start Event will be triggered, as well as the Game End Event.</Description>
		</Function>
		<Function Name="game_save" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This is a legacy function that can be used to save the current state of the game, and is not recommended for use anymore. Use the File functions instead to create a custom save system where you only save and load specific game data.</Description>
			<Parameter Name="filename" Type="String" Optional="false">The name of the file to save the game to.</Parameter>
		</Function>
		<Function Name="game_save_buffer" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This is a variant of the game_save() function, so please read its page first as it contains important information related to its use and to this function&apos;s as well.</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The buffer id to save to.</Parameter>
		</Function>
		<Function Name="game_set_speed" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set the game speed. You can set this in one of two ways - as either game frames per second (FPS) or as microseconds per game frame (MPF) - using one of the following two constants:</Description>
			<Parameter Name="speed" Type="Real" Optional="false">The new game speed (as either FPS or MPF).</Parameter>
			<Parameter Name="type" Type="Constant.GameSpeed" Optional="false">The type of method used to set the game speed (see the constants above).</Parameter>
		</Function>
		<Function Name="highscore_add" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can add a name and a score to the internal global high score list. There is no need to check the value to see if it is high enough to enter into the score list as GameMaker will only store those values that are greater than the tenth position stored.</Description>
			<Parameter Name="str" Type="String" Optional="false">The string (name) to attribute the score to</Parameter>
			<Parameter Name="numb" Type="Real" Optional="false">The number (score) to add.</Parameter>
		</Function>
		<Function Name="highscore_value" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can clear the internal global high score list, resetting all names to the default value of &quot;Unknown&quot; and all scores to the default value of 0.</Description>
			<Parameter Name="place" Type="Real" Optional="false">The place on the table (1-10).</Parameter>
		</Function>
		<Function Name="highscore_name" Deprecated="false" ReturnType="String" Pure="true">
			<Description>With this function you can retrieve the name string that has been stored in the high score list at the given position. If no name has been entered, the string &quot;Unknown&quot; will be returned.</Description>
			<Parameter Name="place" Type="Real" Optional="false">The place on the table (1-10).</Parameter>
		</Function>
		<Function Name="angle_difference" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the smallest angle difference between two angles as a value between -180 and 180 degrees (where a positive angle is anti-clockwise and a negative angle clockwise).</Description>
			<Parameter Name="ang1" Type="Real" Optional="false">The first angle to use.</Parameter>
			<Parameter Name="ang2" Type="Real" Optional="false">The second angle to use.</Parameter>
		</Function>
		<Function Name="arccos" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Returns the inverse cosine of x, in that if cos(val)=n, arccos(n)=val, and the resulting number will be between pi and 0.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The angle (in radians) to return the inverse cosine of.</Parameter>
		</Function>
		<Function Name="arcsin" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Returns the inverse sine of x, in that if sin(x)=n, arcsin(n)=x, and the resulting number will be between -pi/2 and pi/2.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The value to return the inverse sine of.</Parameter>
		</Function>
		<Function Name="arctan" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Returns the inverse tangent of x. This will accept any number as, unlike tan(), arctan() asymptotes are on the y axis so it just means you&apos;ll never get returned a number greater than pi/2 or less than -pi/2.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The angle (in radians) to return the inverse tangent of.</Parameter>
		</Function>
		<Function Name="arctan2" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the inverse tangent of an angle y/x, where y = Opposite side of triangle and x = Adjacent side of triangle. Unlike arctan() the function arctan2(y, x) is valid for all angles and so may be used to convert a vector to an angle without risking division by zero, and it also returns a result in the correct quadrant.</Description>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate to calculate.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate to calculate.</Parameter>
		</Function>
		<Function Name="cos" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>In a right angled triangle cos(val) = Adjacent / Hypotenuse where val is one of the three angles. This function will always return a number between 1 and -1.</Description>
			<Parameter Name="val" Type="Real" Optional="false">The angle (in radians) to return the cosine of.</Parameter>
		</Function>
		<Function Name="darccos" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Returns the inverse cosine of x, in that if dcos(val)=n, darccos(n)=val, and the resulting number will be between 180 and 0.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The value to return the inverse cosine of.</Parameter>
		</Function>
		<Function Name="darcsin" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Returns the inverse sine of x, in that if dsin(x)=n, darcsin(n)=x, and the resulting number will be between -90 and 90.</Description>
			<Parameter Name="val" Type="Real" Optional="false">The value to return the inverse sine of.</Parameter>
		</Function>
		<Function Name="darctan" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Returns the inverse tangent of x. This will accept any number as, unlike dtan(), darctan() asymptotes are on the y axis so it just means you&apos;ll never get returned a number greater than 90 or less than -90.</Description>
			<Parameter Name="val" Type="Real" Optional="false">The value to return the inverse tangent of.</Parameter>
		</Function>
		<Function Name="darctan2" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the inverse tangent of an angle y/x, where y = Opposite side of triangle and x = Adjacent side of triangle. Unlike darctan() the function darctan2() is valid for all angles and so may be used to convert a vector to an angle without risking division by zero, and it also returns a result in the correct quadrant.</Description>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate to calculate.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate to calculate.</Parameter>
		</Function>
		<Function Name="dcos" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>In a right angled triangle cos(val) = Adjacent / Hypotenuse where val is one of the three angles. This function will always return a number between 1 and -1.</Description>
			<Parameter Name="val" Type="Real" Optional="false">The angle (in degrees) to return the cosine of.</Parameter>
		</Function>
		<Function Name="degtorad" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>In GM all the trigonometric functions work in radians, but most people work in degrees and this means that to convert your degrees into radians you need to use this function. For example, degtorad(180) returns 3.14159265 radians. This function translates degrees into radians using the formula:</Description>
			<Parameter Name="deg" Type="Real" Optional="false">The degrees to convert.</Parameter>
		</Function>
		<Function Name="distance_to_object" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function calculates the distance from the edge of the bounding box of the calling instance to the nearest edge of the nearest instance of the object specified. The object can be an object index or a specific instance ID as well as the keyword other, and the distance is returned in pixels. Note that if either of the objects have no sprite or no mask defined, the results will be incorrect.</Description>
			<Parameter Name="obj" Type="Id.Instance,Asset.GMObject" Optional="false">The object to check for.</Parameter>
		</Function>
		<Function Name="distance_to_point" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function calculates the distance from the edge of the bounding box of the calling instance to the specified x/y position in the room, with the return value being in pixels. Note that if the calling object have no sprite or no mask defined, the results will be incorrect.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x position to check.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position to check.</Parameter>
		</Function>
		<Function Name="dot_product" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>The dot product is a value expressing the angular relationship between two vectors and is found by taking two vectors, multiplying them together and then adding the results. The name &quot;dot product&quot; is derived from the centered dot &quot;·&quot; that is often used to designate this operation (the alternative name &quot;scalar product&quot; emphasizes the scalar rather than vector nature of the result).</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the first vector.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the first vector.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the second vector.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the second vector.</Parameter>
		</Function>
		<Function Name="dot_product_3d" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>The dot product is a value expressing the angular relationship between two vectors and is found by taking two vectors, multiplying them together and then adding the results. The name &quot;dot product&quot; is derived from the centered dot &quot;·&quot; that is often used to designate this operation (the alternative name &quot;scalar product&quot; emphasizes the scalar rather than vector nature of the result).</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the first vector.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the first vector.</Parameter>
			<Parameter Name="z1" Type="Real" Optional="false">The z coordinate of the first vector.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the second vector.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the second vector.</Parameter>
			<Parameter Name="z2" Type="Real" Optional="false">The z coordinate of the second vector.</Parameter>
		</Function>
		<Function Name="dot_product_3d_normalised" Deprecated="false" ReturnType="Real" Locale="GB" Pure="true">
			<Description>The dot product is a value expressing the angular relationship between two vectors and is found by taking two vectors, multiplying them together and then adding the results. The name &quot;dot product&quot; is derived from the centered dot &quot;·&quot; that is often used to designate this operation (the alternative name &quot;scalar product&quot; emphasizes the scalar rather than vector nature of the result).</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the first vector.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the first vector.</Parameter>
			<Parameter Name="z1" Type="Real" Optional="false">The z coordinate of the first vector.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the second vector.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the second vector.</Parameter>
			<Parameter Name="z2" Type="Real" Optional="false">The z coordinate of the second vector.</Parameter>
		</Function>
		<Function Name="dot_product_normalised" Deprecated="false" ReturnType="Real" Locale="GB" Pure="true">
			<Description>The dot product is a value expressing the angular relationship between two vectors and is found by taking two vectors, multiplying them together and then adding the results. The name &quot;dot product&quot; is derived from the centered dot &quot;·&quot; that is often used to designate this operation (the alternative name &quot;scalar product&quot; emphasizes the scalar rather than vector nature of the result).</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the first vector.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the first vector.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the second vector.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the second vector.</Parameter>
		</Function>
		<Function Name="dsin" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>In a right angled triangle dsin(val) = Opposite / Hypotenuse where &quot;val&quot; is one of the three angles.</Description>
			<Parameter Name="val" Type="Real" Optional="false">The angle (in degrees) to return the sine of.</Parameter>
		</Function>
		<Function Name="dtan" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>In a right angled triangle dtan(val) = Opposite / Adjacent where &quot;val&quot; is one of the three angles.</Description>
			<Parameter Name="val" Type="Real" Optional="false">The angle (in degrees) to return the tangent of.</Parameter>
		</Function>
		<Function Name="lengthdir_x" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function is used to get the x component of a position &quot;len&quot; pixels from the starting point and in direction &quot;dir&quot;. If you imagine a circle around your instance, and then imagine a point anywhere on that circle, to move to that point we need to move the object so many pixels in that direction... so this function (when used with lengthdir_y()) gets the position of that point on the circle to be used in code by the instance. See the image below for details:</Description>
			<Parameter Name="len" Type="Real" Optional="false">The length away of the point to return.</Parameter>
			<Parameter Name="dir" Type="Real" Optional="false">The direction of the point to return.</Parameter>
		</Function>
		<Function Name="lengthdir_y" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function is used to get the y component of a position &quot;len&quot; pixels from the starting point and in direction &quot;dir&quot;. If you imagine a circle around your instance, and then imagine a point anywhere on that circle, to move to that point we need to move the object so many pixels in that direction... so this function (when used with lengthdir_x()) gets the position of that point on the circle to be used in code by the instance. See the image below for details:</Description>
			<Parameter Name="len" Type="Real" Optional="false">The length away of the point to return.</Parameter>
			<Parameter Name="dir" Type="Real" Optional="false">The direction of the point to return.</Parameter>
		</Function>
		<Function Name="point_direction" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the direction of a vector formed by the specified components [x1,y1] and [x2,y2] in relation to the fixed x/y coordinates of the room. For example, in the image below if we want to get the direction from the player ship position to the enemy position so that we can fire a missile at the enemy then we would use this function (the exact code is in the example below the image):</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the first component of the vector</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the first component of the vector</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the second component of the vector</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the second component of the vector</Parameter>
		</Function>
		<Function Name="point_distance" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the length of a vector formed by the specified components [x1,y1] and [x2,y2]. For example, in the image below if we want to get the distance between the player ship position and the enemy position so that we can calculate if the enemy is close enough to shoot at then we would use this function (the exact code is in the example below the image):</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the first component of the vector</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the first component of the vector</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the second component of the vector</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the second component of the vector</Parameter>
		</Function>
		<Function Name="point_distance_3d" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function takes the supplied components of the vector and returns the length (distance) of the vector. It works in exactly the same way as point_distance() but with the addition of factoring in the z value (depth) for use in 3D space.</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the first component of the vector</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the first component of the vector</Parameter>
			<Parameter Name="z1" Type="Real" Optional="false">The z coordinate of the first component of the vector</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the second component of the vector</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the second component of the vector</Parameter>
			<Parameter Name="z2" Type="Real" Optional="false">The z coordinate of the second component of the vector</Parameter>
		</Function>
		<Function Name="radtodeg" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Once you have done your calculations using sin, or cos etc... the result is in radians. This may not always be what you want and so to turn the radians into degrees we use this function. For example, radtodeg(sin(180)) will return -45 degrees. This function translates radians into degrees using the formula:</Description>
			<Parameter Name="rad" Type="Real" Optional="false">The radians to convert.</Parameter>
		</Function>
		<Function Name="sin" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>In a right angled triangle sin(val) = Opposite / Hypotenuse where val is one of the three angles.</Description>
			<Parameter Name="val" Type="Real" Optional="false">The angle (in radians) to return the sine of.</Parameter>
		</Function>
		<Function Name="tan" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>In a right angled triangle tan(val) = Opposite / Adjacent where val is one of the three angles.</Description>
			<Parameter Name="val" Type="Real" Optional="false">The angle (in radians) to return the tangent of.</Parameter>
		</Function>
		<Function Name="date_compare_date" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can check two dates to see which one is the earlier or later than the other. The function returns -1 if date1 is earlier, 0 if both dates are the same, and 1 if date1 is later.</Description>
			<Parameter Name="date1" Type="Real" Optional="false">The first date.</Parameter>
			<Parameter Name="date2" Type="Real" Optional="false">The date to compare it to.</Parameter>
		</Function>
		<Function Name="date_compare_datetime" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can check two dates and times to see which one is the earlier or later than the other. The function returns -1 if date1 is earlier, 1 if date1 is later and 0 if they are the same, although since this takes time into account as well, a 0 for matching is very rare (it literally has to be the same second of the same day of the same month of the same year to return a 0).</Description>
			<Parameter Name="date1" Type="Real" Optional="false">The first datetime.</Parameter>
			<Parameter Name="date2" Type="Real" Optional="false">The datetime to compare it to.</Parameter>
		</Function>
		<Function Name="date_compare_time" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can check two dates and times to see which one has the time component earlier or later than the other. The function returns -1 if datetime1 is earlier, 1 if datetime1 is later and 0 if they are the same, and it ignores the date, so literally just which of the times is further through its given day.</Description>
			<Parameter Name="datetime1" Type="Real" Optional="false">The first datetime.</Parameter>
			<Parameter Name="datetime2" Type="Real" Optional="false">The datetime to compare the first one to.</Parameter>
		</Function>
		<Function Name="date_create_datetime" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will create a datetime value from the component given as the arguments.</Description>
			<Parameter Name="year" Type="Real" Optional="false">The year to set.</Parameter>
			<Parameter Name="month" Type="Real" Optional="false">The month to set.</Parameter>
			<Parameter Name="day" Type="Real" Optional="false">The day to set.</Parameter>
			<Parameter Name="hour" Type="Real" Optional="false">The hour to set.</Parameter>
			<Parameter Name="minute" Type="Real" Optional="false">The minute to set.</Parameter>
			<Parameter Name="second" Type="Real" Optional="false">The second to set.</Parameter>
		</Function>
		<Function Name="date_current_datetime" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Returns the date-time value of the current moment. The time returned is based on the default time zone for the system (ie: local time). You can change the base time zone to use with the function date_set_timezone()</Description>
		</Function>
		<Function Name="date_datetime_string" Deprecated="false" ReturnType="String" Pure="true">
			<Description>With this function you can create a string containing the given datetime, formatted for the system or device that is running the game when the function is called.</Description>
			<Parameter Name="date" Type="Real" Optional="false">The date to use.</Parameter>
		</Function>
		<Function Name="date_date_of" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Returns the date value of the given datetime.</Description>
			<Parameter Name="date" Type="Real" Optional="false">The datetime to extract the date from.</Parameter>
		</Function>
		<Function Name="date_date_string" Deprecated="false" ReturnType="String" Pure="true">
			<Description>With this function you can create a string containing the given date, formatted as day/month/year.</Description>
			<Parameter Name="date" Type="Real" Optional="false">The date to use.</Parameter>
		</Function>
		<Function Name="date_days_in_month" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the number of days that the given month has, either 28, 29, 30 or 31.</Description>
			<Parameter Name="date" Type="Real" Optional="false">The date to use.</Parameter>
		</Function>
		<Function Name="date_days_in_year" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the number of days that the given year has, returning 365 for a normal year, and 366 for a leap year.</Description>
			<Parameter Name="date" Type="Real" Optional="false">The date to use.</Parameter>
		</Function>
		<Function Name="date_day_span" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the number of days between two dates. This value is always positive, and incomplete days will be returned as a fraction.</Description>
			<Parameter Name="date1" Type="Real" Optional="false">The first datetime.</Parameter>
			<Parameter Name="date2" Type="Real" Optional="false">The datetime to compare it to.</Parameter>
		</Function>
		<Function Name="date_get_day" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the day (from 1 to 31) of the given datetime.</Description>
			<Parameter Name="date" Type="Real" Optional="false">The date to check.</Parameter>
		</Function>
		<Function Name="date_get_day_of_year" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the day (from 1 to 366) within the year of the given datetime.</Description>
			<Parameter Name="date" Type="Real" Optional="false">The date to check.</Parameter>
		</Function>
		<Function Name="date_get_hour" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the hour of the given datetime value.</Description>
			<Parameter Name="date" Type="Real" Optional="false">The datetime to check.</Parameter>
		</Function>
		<Function Name="date_get_hour_of_year" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the hour of the given datetime value within the year (from the total number of hours for the year, taking into account leap years).</Description>
			<Parameter Name="date" Type="Real" Optional="false">The datetime to check.</Parameter>
		</Function>
		<Function Name="date_get_minute" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the minute of the given datetime value.</Description>
			<Parameter Name="date" Type="Real" Optional="false">The datetime to check.</Parameter>
		</Function>
		<Function Name="date_get_minute_of_year" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the minute of the given datetime value within the year (from the total number of minutes for the year, taking into account leap years).</Description>
			<Parameter Name="date" Type="Real" Optional="false">The date to check.</Parameter>
		</Function>
		<Function Name="date_get_month" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the month of the given datetime value.</Description>
			<Parameter Name="date" Type="Real" Optional="false">The datetime to check.</Parameter>
		</Function>
		<Function Name="date_get_second" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the second of the given datetime value.</Description>
			<Parameter Name="date" Type="Real" Optional="false">The datetime to check.</Parameter>
		</Function>
		<Function Name="date_get_second_of_year" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the second of the given datetime value within the year (from the total number of seconds for the year, taking into account leap years).</Description>
			<Parameter Name="date" Type="Real" Optional="false">The date to check.</Parameter>
		</Function>
		<Function Name="date_get_timezone" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Gets the base time zone being used for all the rest of the date and time functions. This time zone can either be local (as set by the system) or UTC, and the function will return one of the following constants:</Description>
		</Function>
		<Function Name="date_get_week" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the week of the given datetime value within the year.</Description>
			<Parameter Name="date" Type="Real" Optional="false">The datetime to check.</Parameter>
		</Function>
		<Function Name="date_get_weekday" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the week day value of the given datetime. This will be a value from 0 to 6.</Description>
			<Parameter Name="date" Type="Real" Optional="false">The date to check.</Parameter>
		</Function>
		<Function Name="date_get_year" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the year of the given datetime.</Description>
			<Parameter Name="date" Type="Real" Optional="false">The datetime to check.</Parameter>
		</Function>
		<Function Name="date_hour_span" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the number of hours between two dates. This value is always positive, and incomplete hours will be returned as a fraction.</Description>
			<Parameter Name="date1" Type="Real" Optional="false">The first datetime.</Parameter>
			<Parameter Name="date2" Type="Real" Optional="false">The datetime to compare the first one to.</Parameter>
		</Function>
		<Function Name="date_inc_day" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can increment a given datetime value by a specific number of days, and it will return the new datetime value.</Description>
			<Parameter Name="date" Type="Real" Optional="false">The datetime to add to.</Parameter>
			<Parameter Name="amount" Type="Real" Optional="false">The number of days (must be an integer) to add.</Parameter>
		</Function>
		<Function Name="date_inc_hour" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can increment a given datetime value by a specific number of hours, and it will return the new datetime value.</Description>
			<Parameter Name="date" Type="Real" Optional="false">The datetime to add to.</Parameter>
			<Parameter Name="amount" Type="Real" Optional="false">The number of hours (must be an integer) to add.</Parameter>
		</Function>
		<Function Name="date_inc_minute" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can increment a given datetime value by a specific number of minutes, and it will return the new datetime value.</Description>
			<Parameter Name="date" Type="Real" Optional="false">The datetime to add to.</Parameter>
			<Parameter Name="amount" Type="Real" Optional="false">The number of minutes (must be an integer) to add.</Parameter>
		</Function>
		<Function Name="date_inc_month" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can increment a given datetime value by a specific number of months, and it will return the new datetime value.</Description>
			<Parameter Name="date" Type="Real" Optional="false">The datetime to add to.</Parameter>
			<Parameter Name="amount" Type="Real" Optional="false">The number of months (must be an integer) to add.</Parameter>
		</Function>
		<Function Name="date_inc_second" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can increment a given datetime value by a specific number of seconds, and it will return the new datetime value.</Description>
			<Parameter Name="date" Type="Real" Optional="false">The datetime to add to.</Parameter>
			<Parameter Name="amount" Type="Real" Optional="false">The number of seconds (must be an integer) to add.</Parameter>
		</Function>
		<Function Name="date_inc_week" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can increment a given datetime value by a specific number of weeks, and it will return the new datetime value.</Description>
			<Parameter Name="date" Type="Real" Optional="false">The datetime to add to.</Parameter>
			<Parameter Name="amount" Type="Real" Optional="false">The number of weeks (must be an integer) to add.</Parameter>
		</Function>
		<Function Name="date_inc_year" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can increment a given datetime value by a specific number of years, and it will return the new datetime value.</Description>
			<Parameter Name="date" Type="Real" Optional="false">The datetime to add to</Parameter>
			<Parameter Name="amount" Type="Real" Optional="false">The number of years (must be an integer) to add.</Parameter>
		</Function>
		<Function Name="date_is_today" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will return true if the given datetime value is the day it is being checked on (ie: today), or false otherwise. This can be a handy function for things like Easter Eggs in your games, or for unlocking seasonal content. Note that this function will be affected by the time zone set (default is local time) which you can change using the date_set_timezone() function.</Description>
			<Parameter Name="date" Type="Real" Optional="false">The datetime to use.</Parameter>
		</Function>
		<Function Name="date_leap_year" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will return true if the year component of the given datetime value is a leap year or false otherwise. This can be a handy function for things like Easter Eggs in your games, or for unlocking special content.</Description>
			<Parameter Name="date" Type="Real" Optional="false">The datetime to use.</Parameter>
		</Function>
		<Function Name="date_minute_span" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the number of minutes between two dates. This value is always positive, and incomplete minutes will be returned as a fraction.</Description>
			<Parameter Name="date1" Type="Real" Optional="false">The first datetime.</Parameter>
			<Parameter Name="date2" Type="Real" Optional="false">The datetime to compare it to.</Parameter>
		</Function>
		<Function Name="date_month_span" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the number of months between two dates. This value is always positive, and incomplete months will be returned as a fraction.</Description>
			<Parameter Name="date1" Type="Real" Optional="false">The first datetime.</Parameter>
			<Parameter Name="date2" Type="Real" Optional="false">The datetime to compare it to.</Parameter>
		</Function>
		<Function Name="date_second_span" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the number of seconds between two dates. The return value is always positive and will be a whole number.</Description>
			<Parameter Name="date1" Type="Real" Optional="false">The first datetime.</Parameter>
			<Parameter Name="date2" Type="Real" Optional="false">The datetime to compare it to.</Parameter>
		</Function>
		<Function Name="date_set_timezone" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Sets the base time zone to use for all the rest of the date and time functions. This time zone can either be local (as set by the system) or UTC, and you would use one of the following constants to define which is being used (by default this is local time):</Description>
			<Parameter Name="timezone" Type="Real" Optional="false">The time zone to use for the base time.</Parameter>
		</Function>
		<Function Name="date_time_of" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Returns the time value of the given datetime. The time returned ignores Daylight Saving Time (and so is Universal Time) and would normally be used in conjunction with another date/time handling function.</Description>
			<Parameter Name="date" Type="Real" Optional="false">The datetime to extract the time from.</Parameter>
		</Function>
		<Function Name="date_time_string" Deprecated="false" ReturnType="String" Pure="true">
			<Description>With this function you can create a string containing the given time, formatted for the system or device that is running the game when the function is called.</Description>
			<Parameter Name="date" Type="Real" Optional="false">The datetime to use.</Parameter>
		</Function>
		<Function Name="date_valid_datetime" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check a datetime value to see if it is valid (returns true) or not (returns false). Note that this function will only consider a valid datetime as being after 1/1/1970 and anything before that will return false, so the earliest you can check would be:</Description>
			<Parameter Name="year" Type="Real" Optional="false">The year to check.</Parameter>
			<Parameter Name="month" Type="Real" Optional="false">The month to check.</Parameter>
			<Parameter Name="day" Type="Real" Optional="false">The day to check.</Parameter>
			<Parameter Name="hour" Type="Real" Optional="false">The hour to check.</Parameter>
			<Parameter Name="minute" Type="Real" Optional="false">The minute to check.</Parameter>
			<Parameter Name="second" Type="Real" Optional="false">The second to check.</Parameter>
		</Function>
		<Function Name="date_week_span" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the number of weeks between two dates. This value is always positive, and incomplete weeks will be returned as a fraction.</Description>
			<Parameter Name="date1" Type="Real" Optional="false">The first datetime.</Parameter>
			<Parameter Name="date2" Type="Real" Optional="false">The datetime to compare it to.</Parameter>
		</Function>
		<Function Name="date_year_span" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the number of years between two dates. This value is always positive, and incomplete years will be returned as a fraction.</Description>
			<Parameter Name="date1" Type="Real" Optional="false">The first datetime.</Parameter>
			<Parameter Name="date2" Type="Real" Optional="false">The datetime to compare it to.</Parameter>
		</Function>
		<Function Name="get_timer" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the time that your game has been running on the chosen platform in microseconds (there are 1 million microseconds per second).</Description>
		</Function>
		<Function Name="matrix_build" Deprecated="false" ReturnType="Array[Real]" Pure="true">
			<Description>This function can be used to create your own custom matrix and will return an index value for this new matrix which should be stored in a variable for future reference and use. The matrix itself is created as 16 value array where the first 4 elements are row 1, the second 4 elements are row 2 etc... of a 4x4 matrix.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x component of the translation vector.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y component of the translation vector.</Parameter>
			<Parameter Name="z" Type="Real" Optional="false">The z component of the translation vector.</Parameter>
			<Parameter Name="xrotation" Type="Real" Optional="false">The angle to rotate around the x-axis (in degrees °).</Parameter>
			<Parameter Name="yrotation" Type="Real" Optional="false">The angle to rotate around the y-axis (in degrees °).</Parameter>
			<Parameter Name="zrotation" Type="Real" Optional="false">The angle to rotate around the z-axis (in degrees °).</Parameter>
			<Parameter Name="xscale" Type="Real" Optional="false">The x scale amount.</Parameter>
			<Parameter Name="yscale" Type="Real" Optional="false">The y scale amount.</Parameter>
			<Parameter Name="zscale" Type="Real" Optional="false">The z scale amount.</Parameter>
		</Function>
		<Function Name="matrix_build_identity" Deprecated="false" ReturnType="Array[Real]" Pure="true">
			<Description>This will build a 4x4 identity matrix with the following structure:</Description>
		</Function>
		<Function Name="matrix_build_lookat" Deprecated="false" ReturnType="Array[Real]" Pure="true">
			<Description>This function builds a &quot;look-at&quot; (view) matrix based on the specified parameters listed below. Since this function modifies the view matrix and not the projection matrix, you should first initialize the projection matrix using the other matrix function matrix_build_projection_perspective(), then use this function to move the view camera around within the projection.</Description>
			<Parameter Name="xfrom" Type="Real" Optional="false">The x coordinate of the position to look from.</Parameter>
			<Parameter Name="yfrom" Type="Real" Optional="false">The y coordinate of the position to look from.</Parameter>
			<Parameter Name="zfrom" Type="Real" Optional="false">The z coordinate of the position to look from.</Parameter>
			<Parameter Name="xto" Type="Real" Optional="false">The x coordinate of the position to look to.</Parameter>
			<Parameter Name="yto" Type="Real" Optional="false">The y coordinate of the position to look to.</Parameter>
			<Parameter Name="zto" Type="Real" Optional="false">The z coordinate of the position to look to.</Parameter>
			<Parameter Name="xup" Type="Real" Optional="false">The x coordinate of the &quot;up&quot; vector.</Parameter>
			<Parameter Name="yup" Type="Real" Optional="false">The y coordinate of the &quot;up&quot; vector.</Parameter>
			<Parameter Name="zup" Type="Real" Optional="false">The z coordinate of the &quot;up&quot; vector.</Parameter>
		</Function>
		<Function Name="matrix_build_projection_ortho" Deprecated="false" ReturnType="Array[Real]" Pure="true">
			<Description>This function builds an orthographic projection matrix based on the specified parameters listed below (this is the default projection method used when you create a room in GameMaker without changing anything). Sometimes you need to switch from a perspective projection to an orthographic projection which is what this function is for. It is typically used to draw an overlay, for example, to show the score or other aspects as this gives a &quot;flat&quot; view of the elements drawn (ie: no perspective) in a 3D game. See the image below to get an idea of the difference between orthographic and perspective views.</Description>
			<Parameter Name="w" Type="Real" Optional="false">The width of the projection.</Parameter>
			<Parameter Name="h" Type="Real" Optional="false">The height of the projection.</Parameter>
			<Parameter Name="znear" Type="Real" Optional="false">The near clipping plane.</Parameter>
			<Parameter Name="zfar" Type="Real" Optional="false">The far clipping plane.</Parameter>
		</Function>
		<Function Name="matrix_build_projection_perspective" Deprecated="false" ReturnType="Array[Real]" Pure="true">
			<Description>This function builds a perspective projection matrix based on the dimensions of the near clipping plane, using the specified parameters listed below.</Description>
			<Parameter Name="w" Type="Real" Optional="false">The width of the projection at the near Z position.</Parameter>
			<Parameter Name="h" Type="Real" Optional="false">The height of the projection at the near Z position.</Parameter>
			<Parameter Name="znear" Type="Real" Optional="false">The near clipping plane.</Parameter>
			<Parameter Name="zfar" Type="Real" Optional="false">The far clipping plane.</Parameter>
		</Function>
		<Function Name="matrix_build_projection_perspective_fov" Deprecated="false" ReturnType="Array[Real]" Pure="true">
			<Description>This function builds a perspective projection matrix matrix based on field of view, using the specified parameters listed below.</Description>
			<Parameter Name="fov" Type="Real" Optional="false">The angle of the field of view.</Parameter>
			<Parameter Name="aspect" Type="Real" Optional="false">The aspect ratio of the field of view.</Parameter>
			<Parameter Name="znear" Type="Real" Optional="false">The near clipping plane.</Parameter>
			<Parameter Name="zfar" Type="Real" Optional="false">The far clipping plane.</Parameter>
		</Function>
		<Function Name="matrix_get" Deprecated="false" ReturnType="Array[Real]" Pure="true">
			<Description>This function returns an array of 16 values, corresponding to the given 4x4 matrix type, where row 1 is elements [0 - 3], row 2 is elements [4 -7], etc... (see the image on the main page). The available matrices are view, projection and world, for which you would use one of the following constants:</Description>
			<Parameter Name="type" Type="Constant.MatrixType" Optional="false">The type of matrix to get the values of (see the constants listed above)</Parameter>
		</Function>
		<Function Name="matrix_multiply" Deprecated="false" ReturnType="Array[Real]" Pure="false">
			<Description>With this function you can multiply two matrix arrays together to create a new transform matrix. The function will return the new matrix index which should be stored in a variable for future use.</Description>
			<Parameter Name="matrix1" Type="Array[Real]" Optional="false">The first matrix index to use.</Parameter>
			<Parameter Name="matrix2" Type="Array[Real]" Optional="false">The second matrix index to use.</Parameter>
		</Function>
		<Function Name="matrix_set" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function takes an array of 16 values, corresponding to a given 4x4 matrix type, where elements [0 - 3] would be row 1, elements [4 -7] would be row 2, etc... (see the image on the main page). You can create such a matrix using the matrix_build() or matrix_get() functions or simply building the array yourself and passing that into the function. The available matrix types are view, projection and world, for which you would use one of the following constants:</Description>
			<Parameter Name="type" Type="Constant.MatrixType" Optional="false">The type of matrix to get the values of (see the constants listed above)</Parameter>
			<Parameter Name="matrix" Type="Array[Real]" Optional="false">The matrix data as an array</Parameter>
		</Function>
		<Function Name="matrix_stack_clear" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function clears the matrix stack.</Description>
		</Function>
		<Function Name="matrix_stack_is_empty" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function can be used to check whether the matrix stack is empty (returns true) or not (returns false).</Description>
		</Function>
		<Function Name="matrix_stack_pop" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function pops the current top matrix off the stack.</Description>
		</Function>
		<Function Name="matrix_stack_push" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function pushes the specified matrix onto the matrix stack.</Description>
			<Parameter Name="matrix" Type="Array" Optional="false">The matrix index to use.</Parameter>
		</Function>
		<Function Name="matrix_stack_set" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function overwrites the current top of the matrix stack with the specified matrix.</Description>
			<Parameter Name="matrix" Type="Array" Optional="false">The matrix index to use.</Parameter>
		</Function>
		<Function Name="matrix_stack_top" Deprecated="false" ReturnType="Array[Real]" Pure="true">
			<Description>This function returns the current top matrix of the stack, but does not remove it (for that use matrix_stack_pop()).</Description>
		</Function>
		<Function Name="matrix_transform_vertex" Deprecated="false" ReturnType="Array[Real]" Pure="false">
			<Description>This function transforms a vector by a matrix. You supply the transform matrix ID (as returned by the function matrix build()), as well as the x, y and z values for the vector to transform. Optionally a 4th w parameter can be passed in. The function will return an array of 3 (or 4 if a w is given) elements where:</Description>
			<Parameter Name="matrix" Type="Array[Real]" Optional="false">The matrix to use</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x component of the transform vector</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y component of the transform vector</Parameter>
			<Parameter Name="z" Type="Real" Optional="false">The z component of the transform vector</Parameter>
			<Parameter Name="z" Type="Real" Optional="true">The w component of the transform vector</Parameter>
		</Function>
		<Function Name="abs" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the absolute value of the input argument, so if it&apos;s a positive value then it will remain the same, but if it&apos;s negative it will be multiplied by -1 to make it positive.</Description>
			<Parameter Name="val" Type="Real" Optional="false">The number to turn absolute.</Parameter>
		</Function>
		<Function Name="ceil" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function takes any real number and rounds it up to the nearest integer. Care should be taken with this function as one common mistake is to use it round up a random value and expect it always to be greater than 1, ie:</Description>
			<Parameter Name="x" Type="Real" Optional="false">The number to change.</Parameter>
		</Function>
		<Function Name="choose" Deprecated="false" ReturnType="ArgumentIdentity" Pure="true">
			<Description>Sometimes you want to specify something other than numbers for a random selection, or the numbers you want are not in any real order or within any set range. In these cases you would use choose() to generate a random result. For example, say you want to create an object with a random sprite at the start, then you could use this function to set the sprite index to one of a set of given sprites. Note that you can have as many as you require (note that more arguments will mean that the function will be slower to parse).</Description>
			<Parameter Name="..." Type="ArgumentIdentity" Optional="true">An input value that can be string, integer, variable or constant.</Parameter>
		</Function>
		<Function Name="clamp" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can maintain an input value between a specified range.</Description>
			<Parameter Name="val" Type="Real" Optional="false">The value to clamp.</Parameter>
			<Parameter Name="min" Type="Real" Optional="false">The minimum value to clamp between.</Parameter>
			<Parameter Name="max" Type="Real" Optional="false">The maximum value to clamp between.</Parameter>
		</Function>
		<Function Name="exp" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This is the function power(e,n), where e is approximately 2.718281828 (also known as Euler&apos;s Number), and n is the number of times it should be multiplied by itself. This basically says &quot;how much growth do I get after n units of time (and 100% continuous growth)?&quot;. So exp(3) would return 20.08, which means that after 3 time units we have 20.08 times the amount we started with.</Description>
			<Parameter Name="n" Type="Real" Optional="false">The power of e.</Parameter>
		</Function>
		<Function Name="floor" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Returns the floor of n, that is, n rounded down to an integer. This is similar to the round() function, but it only rounds down, no matter what the decimal value, so floor(5.99999) will return 5, as will floor(5.2), floor(5.6457) etc...</Description>
			<Parameter Name="n" Type="Real" Optional="false">The number to floor.</Parameter>
		</Function>
		<Function Name="frac" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the fractional part of n, that is, the part behind the decimal dot. It will return only the decimals behind the dot of a value, so frac(3.125) will return 0.125, frac(6.921) will return 0.921, etc...</Description>
			<Parameter Name="n" Type="Real" Optional="false">The number to change.</Parameter>
		</Function>
		<Function Name="irandom" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This very useful function only returns integers (whole numbers). So, for example, to get a random number from 0 to 9 you can use irandom(9) and it will return a number from 0 to 9 inclusive. Note that floats can also be used but the upper value after the point will be excluded, so irandom(9.7) will return a value from 0 to 9 only. The function has an upper bound of $7fffffffffffffffLL, so care should be taken if using very large numbers.</Description>
			<Parameter Name="n" Type="Real" Optional="false">The upper range from which the random number will be selected.</Parameter>
		</Function>
		<Function Name="irandom_range" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function is similar to random_range() only with integer values as the input. You supply the low value for the range as well as the high value, and the function will return a random integer value within (and including) the given range. For example, irandom_range(10, 35) will return an integer between 10 and 35 inclusive.</Description>
			<Parameter Name="n1" Type="Real" Optional="false">The low end of the range from which the random number will be selected.</Parameter>
			<Parameter Name="n2" Type="Real" Optional="false">The high end of the range from which the random number will be selected.</Parameter>
		</Function>
		<Function Name="lerp" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can find the value that equates to the position between two other values for a given percentage. So if you do, for example:</Description>
			<Parameter Name="a" Type="Real" Optional="false">The first value.</Parameter>
			<Parameter Name="b" Type="Real" Optional="false">The second value.</Parameter>
			<Parameter Name="amt" Type="Real" Optional="false">The amount to interpolate.</Parameter>
		</Function>
		<Function Name="ln" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>The natural logarithm ln(n) is the amount of time needed to reach a certain level of continuous growth, where n is the level reached. So if we want to find out how many time units we need to get 20 growth we would use ln(20) which returns 2.99 units of time to get that amount of growth.</Description>
			<Parameter Name="n" Type="Real" Optional="false">The input value.</Parameter>
		</Function>
		<Function Name="log10" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function is similar to the log2(n) function, only that log10(n) gets the number of 10&apos;s that we need to multiply together to get n. So log10(100) returns 2, as multiplying 10 by itself gives 100, log10(1000) returns 3 as 10x10x10=1000 etc... The number does not have to be divisible by ten, however, but this will still return an appropriate value, for example if we have log10(101) we get 2.00432137... which is how many times you could divide 101 by 10.</Description>
			<Parameter Name="n" Type="Real" Optional="false">The input value.</Parameter>
		</Function>
		<Function Name="log2" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function basically asks &quot;how many 2&apos;s do you need to multiply to get n?&quot;. A common example of use in programming would be to calculate the number of bits that are needed to represent a number. To do this we calculate the log2(x) of the number, round it down and add 1 - for example log2(100) returns 6.643856, which rounded down is 6, to which we add one and it gives us 7. So we need 7 bits to represent 100. It can also be used for describing exponential growth or decay, and is often called a binary logarithm.</Description>
			<Parameter Name="n" Type="Real" Optional="false">The input value.</Parameter>
		</Function>
		<Function Name="logn" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function is similar to the log2(n) and log10(n) functions, only you stipulate the log base value. For example, logn(5,25) will return how many 5&apos;s we need to multiply to get 25 (which is 2).</Description>
			<Parameter Name="n" Type="Real" Optional="false">The log base.</Parameter>
			<Parameter Name="val" Type="Real" Optional="false">The input value.</Parameter>
		</Function>
		<Function Name="math_get_epsilon" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the current epsilon value for the target platform. For more information on epsilon, please see the function math_set_epsilon().</Description>
		</Function>
		<Function Name="math_set_epsilon" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>Epsilon is a value used to determine whether two numbers subject to rounding error are close enough to be considered &quot;equal&quot;. It is useful when dealing with floating point maths as it can reduce the &quot;rounding errors&quot; that make certain operations return values that appear incorrect or contrary to what we expect. For example, we may have added a value to the image index of a sprite and expect the result to be a single integer, but due to the nature of floating point maths, the actual final value ends up being something like 5.0000002, so when we have the following check:</Description>
			<Parameter Name="epsilon" Type="Real" Optional="false">The new epsilon value (from 0 to 0.999999999).</Parameter>
		</Function>
		<Function Name="max" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the maximum of the input values, of which it can have up to 16. For example max(12, 96, 32, 75) will return 96 as that is the highest of all the input values.</Description>
			<Parameter Name="..." Type="Real" Optional="true">The values to compare.</Parameter>
		</Function>
		<Function Name="mean" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function works by adding up all the input values and then dividing them by their own number. You can have as many arguments as you require (note that more arguments will mean that the function will be slower to parse). So, mean(2, 6, 9, 32) returns 12.25 as 2+6+9+32=49 and 49/4=12.25.</Description>
			<Parameter Name="..." Type="Real" Optional="true">The values to compare.</Parameter>
		</Function>
		<Function Name="median" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the median of the input values, that is, the middle value. When the number of arguments is even, the smaller of the two middle values is returned and the function can have as many arguments as required (note that more arguments will mean that the function will be slower to parse) which must all be real values. This means that, for example, median(43, 12, 25, 19, 6) would return 19 as it is the middle value between all the rest.</Description>
			<Parameter Name="..." Type="Real" Optional="true">The values to compare.</Parameter>
		</Function>
		<Function Name="min" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the minimum of the input values, of which it can have as many as you require (note that more arguments will mean that the function will be slower to parse). For example min(12, 96, 32, 75) will return 12 as that is the lowest of all the input values.</Description>
			<Parameter Name="..." Type="Real" Optional="true">The values to compare.</Parameter>
		</Function>
		<Function Name="power" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This will return the value of a number multiplied by itself &quot;n&quot; number of times. For example, power(5,3) will multiply 5 by itself 3 times and return 125, which is the same as saying 5*5*5=125. Please note that the &quot;x&quot; value (the number to change) cannot be a negative value.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The number to change.</Parameter>
			<Parameter Name="n" Type="Real" Optional="false">How many times to multiply x by itself.</Parameter>
		</Function>
		<Function Name="random" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function is good for probabilities where returning an integer (whole number) is not necessary. For example, random(100) will return a value from 0 to 99, but that value can be 22.56473! You can also use real numbers and not integers in this function like this - random(0.5), which will return a value between 0 and 0.4999999.</Description>
			<Parameter Name="n" Type="Real" Optional="false">The upper range from which the random number will be selected.</Parameter>
		</Function>
		<Function Name="randomise" Deprecated="false" ReturnType="Real" Locale="GB" Pure="false">
			<Description>This function sets the seed to a random value. Should you need to keep a consistent value over a number of runs of a game, you should be using random_set_seed(). Please note, that when using the random number functions in GameMaker the initial seed is always the same, as this makes tracing errors and debugging far easier. Should you wish to test with true random, you should call this function at the start of your game. The function will return the new randomised seed value (an unsigned 32bit integer).</Description>
		</Function>
		<Function Name="random_get_seed" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>To generate a random number GameMaker starts with a random seed number. With this function you can retrieve that seed, which can then be stored to reproduce a specific series of random events. For example, say you have a procedurally generated game, but want the player to be able to go back to previously discovered areas. Well, at the start of each area, you can store the random seed with this function and so every time you need to go back there, you can use random_set_seed() to set the seed to what it was previously and so force GameMaker to reproduce the same set of &quot;random&quot; functions that it used previously.</Description>
		</Function>
		<Function Name="random_range" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns a random number between the specified range, and this return value does not need to be an integer. For example, random_range(20,50) will return a random number from 20 to 50, but the value may be a real number like 38.65265. Real numbers can also be used as input arguments.</Description>
			<Parameter Name="n1" Type="Real" Optional="false">The low end of the range from which the random number will be selected.</Parameter>
			<Parameter Name="n2" Type="Real" Optional="false">The high end of the range from which the random number will be selected.</Parameter>
		</Function>
		<Function Name="random_set_seed" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>To generate a random number GameMaker starts with a random seed number. With this function you can set that seed to a known value and so &quot;force&quot; the outcome of all random events afterwards to be the same every time the program is run. For example, this function can be used in conjunction with random_get_seed() to create procedurally generated content and save the results without having huge savegames (you save the seed only, no need for anything else). Should you need truly random results for everything, you should be using the randomise() function.</Description>
			<Parameter Name="val" Type="Real" Optional="false">The seed to set.</Parameter>
		</Function>
		<Function Name="round" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Just as it says, round() takes a real number and rounds it up or down to the nearest integer. In the special case where the number supplied is exactly a half-integer (1.5, 17.5, -2.5, etc), the number will be rounded to the nearest even value, for example, 2.5 would be rounded to 2, while 3.5 will be rounded to 4. This type of rounding is called bankers rounding and over large numbers of iterations or when using floating point maths, it gives a statistically better rounding than the more traditional &quot;round up if over .5 and round down otherwise&quot; approach.</Description>
			<Parameter Name="n" Type="Real" Optional="false">The number to round.</Parameter>
		</Function>
		<Function Name="sign" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns whether a number is positive, negative or neither and returns 1, -1, 0 respectively. For example - sign(458) will return 1, sign(-5) will return -1 and sign(0) will return 0.</Description>
			<Parameter Name="n" Type="Real" Optional="false">The number to get the sign of.</Parameter>
		</Function>
		<Function Name="sqr" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Multiplies a number by itself and so returns the square of that number. EG: sqr(5) would return 25 since 5*5=25.</Description>
			<Parameter Name="val" Type="Real" Optional="false">The number to square.</Parameter>
		</Function>
		<Function Name="sqrt" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>If you multiply a number with itself, you get the square of that number, but sometimes you want to do the reverse and get the square root of a number. So to find what number has been multiplied with itself to get any given positive value we use this function. For example: sqrt(9) will return 3 since 3*3=9.</Description>
			<Parameter Name="val" Type="Real" Optional="false">The number to get the square root of.</Parameter>
		</Function>
		<Function Name="collision_circle" Deprecated="false" ReturnType="Id.Instance" Pure="true">
			<Description>Collision_circle creates a circular zone of the radius given by the user around the points x1,y1 and then checks that zone for a collision with any instance of the object specified by the argument &quot;obj&quot;. This check can be either precise or not, but for precise collisions to be enabled, the object or instance that you are checking for must also have precise collisions enabled for their sprite. If not, the default check is based on bounding boxes. The following image illustrates how this works:</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the center of the circle to check.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the center of the circle to check.</Parameter>
			<Parameter Name="rad" Type="Real" Optional="false">The radius (distance in pixels from its center to its edge).</Parameter>
			<Parameter Name="obj" Type="Asset.GMObject,Id.Instance,Constant.All,Constant.Other" Optional="false">The object to check for instance collisions.</Parameter>
			<Parameter Name="prec" Type="Bool" Optional="false">Whether the check is based on pixel-perfect collisions (true = slow) or its bounding box in general (false = fast).</Parameter>
			<Parameter Name="notme" Type="Bool" Optional="false">Whether the calling instance, if relevant, should be excluded (true) or not (false).</Parameter>
		</Function>
		<Function Name="collision_circle_list" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function is the same as the collision_circle() function, only instead of just detecting one instance in collision at a time, it will detect multiple instances. You supply the x/y position of the center of the circular area to check along with the radius and the object to check for, and you can set the check to be precise (in which case all instances being checked will need to have precise collision masks) and whether the check should include the calling instance or not.</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the center of the circle to check.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the center of the circle to check.</Parameter>
			<Parameter Name="rad" Type="Real" Optional="false">The radius (distance in pixels from its center to its edge).</Parameter>
			<Parameter Name="obj" Type="Asset.GMObject,Id.Instance,Constant.All,Constant.Other" Optional="false">The object to check for instance collisions.</Parameter>
			<Parameter Name="prec" Type="Bool" Optional="false">Whether the check is based on precise collisions (true, which is slower) or its bounding box in general (false, faster).</Parameter>
			<Parameter Name="notme" Type="Bool" Optional="false">Whether the calling instance, if relevant, should be excluded (true) or not (false).</Parameter>
			<Parameter Name="list" Type="Id.DsList" Optional="false">The DS list to use to store the IDs of colliding instances.</Parameter>
			<Parameter Name="ordered" Type="Bool" Optional="false">Whether the list should be ordered by distance (true) or not (false).</Parameter>
		</Function>
		<Function Name="collision_ellipse" Deprecated="false" ReturnType="Id.Instance" Pure="true">
			<Description>Collision_ellipse uses the first four arguments (x1,y1,x2,y2) to define the width and height of an ellipse within the current room and then checks to see if any object that is defined by the &quot;obj&quot; argument is in collision with that area. This collision can be checked as precise or not, and you may also choose to check for the instance running the code itself or not. Consider this image:</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the left side of the ellipse to check.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the top side of the ellipse to check.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the right side of the ellipse to check.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the bottom side of the ellipse to check.</Parameter>
			<Parameter Name="obj" Type="Asset.GMObject,Id.Instance,Constant.All,Constant.Other" Optional="false">The object to check for instance collisions.</Parameter>
			<Parameter Name="prec" Type="Bool" Optional="false">Whether the check is based on precise collisions (true, which is slower) or its bounding box in general (false, faster).</Parameter>
			<Parameter Name="notme" Type="Bool" Optional="false">Whether the calling instance, if relevant, should be excluded (true) or not (false).</Parameter>
		</Function>
		<Function Name="collision_ellipse_list" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function is the same as the collision_ellipse() function, only instead of just detecting one instance in collision at a time, it will detect multiple instances. You supply the x/y positions of the top left and bottom right of the elliptical area to check along with the object to check for, and you can set the check to be precise (in which case all instances being checked will need to have precise collision masks) and whether the check should include the calling instance or not.</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the left side of the ellipse to check.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the top side of the ellipse to check.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the right side of the ellipse to check.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the bottom side of the ellipse to check.</Parameter>
			<Parameter Name="obj" Type="Asset.GMObject,Id.Instance,Constant.All,Constant.Other" Optional="false">The object to check for instance collisions.</Parameter>
			<Parameter Name="prec" Type="Bool" Optional="false">Whether the check is based on precise collisions (true, which is slower) or its bounding box in general (false, faster).</Parameter>
			<Parameter Name="notme" Type="Bool" Optional="false">Whether the calling instance, if relevant, should be excluded (true) or not (false).</Parameter>
			<Parameter Name="list" Type="Id.DsList" Optional="false">The DS list to use to store the IDs of colliding instances.</Parameter>
			<Parameter Name="ordered" Type="Bool" Optional="false">Whether the list should be ordered by distance (true) or not (false).</Parameter>
		</Function>
		<Function Name="collision_line" Deprecated="false" ReturnType="Id.Instance" Pure="true">
			<Description>Collision_line checks along a line from point x1,y1 to point x2,y2 for a collision with any instance of the object specified by the argument &quot;obj&quot;. this check can be either precise or not, but for precise collisions to be enabled, the object or instance that you are checking for must also have precise collisions enabled for their sprite. If not, the default check is based on bounding boxes. The following image illustrates how this works:</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the start of the line.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the start of the line.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the end of the line.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the end of the line.</Parameter>
			<Parameter Name="obj" Type="Asset.GMObject,Id.Instance,Constant.All,Constant.Other" Optional="false">The object to check for instance collisions.</Parameter>
			<Parameter Name="prec" Type="Bool" Optional="false">Whether the check is based on precise collisions (true, which is slower) or its bounding box in general (false, faster).</Parameter>
			<Parameter Name="notme" Type="Bool" Optional="false">Whether the calling instance, if relevant, should be excluded (true) or not (false).</Parameter>
		</Function>
		<Function Name="collision_line_list" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function is the same as the collision_line() function, only instead of just detecting one instance in collision at a time, it will detect multiple instances. You supply the x/y positions of the start and end of the line to check along with the object to check for, and you can set the check to be precise (in which case all instances being checked will need to have precise collision masks) and whether the check should include the calling instance or not.</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the start of the line.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the start of the line.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the end of the line.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the end of the line.</Parameter>
			<Parameter Name="obj" Type="Asset.GMObject,Id.Instance,Constant.All,Constant.Other" Optional="false">The object to check for instance collisions.</Parameter>
			<Parameter Name="prec" Type="Bool" Optional="false">Whether the check is based on precise collisions (true, which is slower) or its bounding box in general (false, faster).</Parameter>
			<Parameter Name="notme" Type="Bool" Optional="false">Whether the calling instance, if relevant, should be excluded (true) or not (false).</Parameter>
			<Parameter Name="list" Type="Id.DsList" Optional="false">The DS list to use to store the IDs of colliding instances.</Parameter>
			<Parameter Name="ordered" Type="Bool" Optional="false">Whether the list should be ordered by distance (true) or not (false).</Parameter>
		</Function>
		<Function Name="collision_point" Deprecated="false" ReturnType="Id.Instance" Pure="true">
			<Description>Collision_point checks the point specified by the arguments x1,y1 for a collision with any instance of the object specified by the argument &quot;obj&quot;. this check can be either precise or not, but for precise collisions to be enabled, the object or instance that you are checking for must also have precise collisions enabled for their sprite. If not, the default check is based on bounding boxes. The following image illustrates how this works:</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of the point to check.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of the point to check.</Parameter>
			<Parameter Name="obj" Type="Asset.GMObject,Id.Instance,Constant.All,Constant.Other" Optional="false">The object to check for instance collisions.</Parameter>
			<Parameter Name="prec" Type="Bool" Optional="false">Whether the check is based on precise collisions (true, which is slower) or its bounding box in general (false, faster).</Parameter>
			<Parameter Name="notme" Type="Bool" Optional="false">Whether the calling instance, if relevant, should be excluded (true) or not (false).</Parameter>
		</Function>
		<Function Name="collision_point_list" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function is the same as the collision_point() function, only instead of just detecting one instance in collision at a time, it will detect multiple instances. You supply the x/y position of the point to check and you can set the check to be precise (in which case all instances being checked will need to have precise collision masks) and whether the check should include the calling instance or not.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of the point to check.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of the point to check.</Parameter>
			<Parameter Name="obj" Type="Asset.GMObject,Id.Instance,Constant.All,Constant.Other" Optional="false">The object to check for instance collisions.</Parameter>
			<Parameter Name="prec" Type="Bool" Optional="false">Whether the check is based on precise collisions (true, which is slower) or its bounding box in general (false, faster).</Parameter>
			<Parameter Name="notme" Type="Bool" Optional="false">Whether the calling instance, if relevant, should be excluded (true) or not (false).</Parameter>
			<Parameter Name="list" Type="Id.DsList" Optional="false">The DS list to use to store the IDs of colliding instances.</Parameter>
			<Parameter Name="ordered" Type="Bool" Optional="false">Whether the list should be ordered by distance (true) or not (false).</Parameter>
		</Function>
		<Function Name="collision_rectangle" Deprecated="false" ReturnType="Id.Instance" Pure="true">
			<Description>Collision_rectangle uses the first four arguments (x1,y1,x2,y2) to define an area within the current room and then checks to see if any object that is defined by the &quot;obj&quot; argument is in collision with that area. This collision can be checked as precise or not, and you may also choose to check for the instance running the code itself or not. Consider this image:</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the left side of the rectangle to check.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the top side of the rectangle to check.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the right side of the rectangle to check.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the bottom side of the rectangle to check.</Parameter>
			<Parameter Name="obj" Type="Asset.GMObject,Id.Instance,Constant.All,Constant.Other" Optional="false">The object to check for instance collisions.</Parameter>
			<Parameter Name="prec" Type="Bool" Optional="false">Whether the check is based on precise collisions (true, which is slower) or its bounding box in general (false, faster).</Parameter>
			<Parameter Name="notme" Type="Bool" Optional="false">Whether the calling instance, if relevant, should be excluded (true) or not (false).</Parameter>
		</Function>
		<Function Name="collision_rectangle_list" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function is the same as the collision_rectangle() function, only instead of just detecting one instance in collision at a time, it will detect multiple instances. You supply the x/y positions of the top left and bottom right of the area to check along with the object to check for, and you can set the check to be precise (in which case all instances being checked will need to have precise collision masks) and whether the check should include the calling instance or not.</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the left side of the rectangle to check.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the top side of the rectangle to check.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the right side of the rectangle to check.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the bottom side of the rectangle to check.</Parameter>
			<Parameter Name="obj" Type="Asset.GMObject,Id.Instance,Constant.All,Constant.Other" Optional="false">The object to check for instance collisions.</Parameter>
			<Parameter Name="prec" Type="Bool" Optional="false">Whether the check is based on precise collisions (true, which is slower) or its bounding box in general (false, faster).</Parameter>
			<Parameter Name="notme" Type="Bool" Optional="false">Whether the calling instance, if relevant, should be excluded (true) or not (false).</Parameter>
			<Parameter Name="list" Type="Id.DsList" Optional="false">The DS list to use to store the IDs of colliding instances.</Parameter>
			<Parameter Name="ordered" Type="Bool" Optional="false">Whether the list should be ordered by distance (true) or not (false).</Parameter>
		</Function>
		<Function Name="place_empty" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>You can use this function to check and see if the calling instance would collide with any other instance of an object or all instances in your game. For this to collision to resolve correctly, the instance running the code must have a valid collision mask (either for the sprite itself, or through the mask_index) and it will only register collisions with those instances that also have a valid mask.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x position to check.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position to check.</Parameter>
			<Parameter Name="object_id" Type="Asset.GMObject,Id.Instance" Optional="true">Optional! The object to check against.</Parameter>
		</Function>
		<Function Name="place_free" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>You can use this function to check and see if the calling instance would collide with any instance flagged as solid in your game. Now, it should be noted that for this to work, the instance running the code must have a valid collision mask (either for the sprite itself, or through the mask_index) and it will only register collisions with those solid flagged instances that also have a valid mask.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x position to check.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position to check.</Parameter>
		</Function>
		<Function Name="place_meeting" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check a position for a collision with another instance or all instances of an object using the collision mask of the instance that runs the code for the check. When you use this you are effectively asking GameMaker to move the instance to the new position, check for a collision, move back and tell you if a collision was found or not. This will work for precise collisions, but only if both the instance and the object being checked for have precise collision masks selected otherwise only bounding box collisions are applied. This function also accepts the special keywords all and other. Please note that should you need to get the unique instance id of the object being collided with, you should use instance_place().</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x position to check.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position to check.</Parameter>
			<Parameter Name="obj" Type="Asset.GMObject,Id.Instance,Constant.All" Optional="false">The instance or object to check for.</Parameter>
		</Function>
		<Function Name="point_in_circle" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>When using this function, you define a circular area and GameMaker will work out whether the given point falls within its bounds or not. If the point falls within the defined circle the function will return true otherwise the function will return false.</Description>
			<Parameter Name="px" Type="Real" Optional="false">The x coordinate of the point to check.</Parameter>
			<Parameter Name="py" Type="Real" Optional="false">The y coordinate of the point to check.</Parameter>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the circle centre.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the circle centre.</Parameter>
			<Parameter Name="rad" Type="Real" Optional="false">The radius of the circle.</Parameter>
		</Function>
		<Function Name="point_in_rectangle" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>When using this function, you define a rectangular area and GameMaker will work out whether the given point falls within its bounds or not. If the point falls within the defined rectangle the function will return true otherwise the function will return false.</Description>
			<Parameter Name="px" Type="Real" Optional="false">The x coordinate of the point to check.</Parameter>
			<Parameter Name="py" Type="Real" Optional="false">The y coordinate of the point to check.</Parameter>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the left side of the rectangle to check.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the top side of the rectangle to check.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the right side of the rectangle to check.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the bottom side of the rectangle to check.</Parameter>
		</Function>
		<Function Name="point_in_triangle" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>When using this function, you define a triangular area and GameMaker will work out whether the given point falls within its bounds or not. If the point falls within the defined triangle the function will return true otherwise the function will return false.</Description>
			<Parameter Name="px" Type="Real" Optional="false">The x coordinate of the point to check.</Parameter>
			<Parameter Name="py" Type="Real" Optional="false">The y coordinate of the point to check.</Parameter>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the first corner of the triangle to check.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the first corner of the triangle to check.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the second corner of the triangle to check.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the second corner of the triangle to check.</Parameter>
			<Parameter Name="x3" Type="Real" Optional="false">The x coordinate of the third corner of the triangle to check.</Parameter>
			<Parameter Name="y3" Type="Real" Optional="false">The y coordinate of the third corner of the triangle to check.</Parameter>
		</Function>
		<Function Name="position_change" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will check a position for a collision with any instances at the given point, and if there is one, it will change all instances in collision to be instances of the chosen object. You can set the &quot;perf&quot; argument to true which will force GameMaker to perform the Destroy and Clean Up events of the found instance as well as the Create event of the new instance, or false to not perform any of these events. Please note, that if you choose not to perform the Destroy, Clean Up and Create events, any instance created that uses a variable normally defined in the create event will crash the game as that variable will no longer exist.</Description>
			<Parameter Name="x" Type="Id.Instance" Optional="false">The x coordinate of where to change colliding instances.</Parameter>
			<Parameter Name="y" Type="Id.Instance" Optional="false">The y coordinate of where to change colliding instances.</Parameter>
			<Parameter Name="obj" Type="Asset.GMObject" Optional="false">The new object the calling object will change into.</Parameter>
			<Parameter Name="perf" Type="Bool" Optional="false">Whether to perform that new object&apos;s Create event (true) or not (false).</Parameter>
		</Function>
		<Function Name="position_destroy" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function simply destroys all instances that are found to be in collision with the specified position. Collisions are based on the mask of the instances, and if any part of the mask over-laps with the target point it then the function will destroy that instance. Instances destroyed in this way will trigger their Destroy and Clean Up events.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of where to destroy colliding instances.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of where to destroy colliding instances.</Parameter>
		</Function>
		<Function Name="position_empty" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will check to see if a given position enters into collision with any instance with a valid collision mask at the given position.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x position to check.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position to check.</Parameter>
		</Function>
		<Function Name="position_meeting" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check a position for a collision with another instance or all instances of an object. When you use this you are checking a single point in the room for an instance or an object. This check will be done against the bounding box of the instance or against the mask of the instance if that instance has precise collisions checked. If you need to get the unique instance id if the object being collided with you should use instance_position(). This function also accepts the special keywords all and other.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x position to check.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position to check.</Parameter>
			<Parameter Name="obj" Type="Asset.GMObject,Id.Instance,Constant.All" Optional="false">The object (or instance id, or the keywords &quot;all&quot; or &quot;other&quot;) to check for a collision with.</Parameter>
		</Function>
		<Function Name="rectangle_in_circle" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will check a rectangular area that you define to see if it is either not in collision, completely within the destination bounds, or if it is simply touching, a defined circular area. If they are not touching at all the function will return 0, if the source is completely within the destination it will return 1, and if they are simply overlapping then it will return 2. The image below illustrates this:</Description>
			<Parameter Name="sx1" Type="Real" Optional="false">The x coordinate of the left side of the source rectangle.</Parameter>
			<Parameter Name="sy1" Type="Real" Optional="false">The y coordinate of the top side of the source rectangle.</Parameter>
			<Parameter Name="sx2" Type="Real" Optional="false">The x coordinate of the right side of the source rectangle.</Parameter>
			<Parameter Name="sy2" Type="Real" Optional="false">The y coordinate of the bottom side of the source rectangle.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of the centre of the circle</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of the centre of the circle.</Parameter>
			<Parameter Name="rad" Type="Real" Optional="false">The radius around the center point in which to check for a collision.</Parameter>
		</Function>
		<Function Name="rectangle_in_rectangle" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will check two rectangular areas that you define to see if the source rectangle is either not in collision, completely within the destination rectangles bounds, or if they are simply touching. If they are not touching at all the function will return 0, if the source is completely within the destination it will return 1, and if they are simply overlapping then it will return 2. The image below illustrates this:</Description>
			<Parameter Name="sx1" Type="Real" Optional="false">The x coordinate of the left side of the source rectangle.</Parameter>
			<Parameter Name="sy1" Type="Real" Optional="false">The y coordinate of the top side of the source rectangle.</Parameter>
			<Parameter Name="sx2" Type="Real" Optional="false">The x coordinate of the right side of the source rectangle.</Parameter>
			<Parameter Name="sy2" Type="Real" Optional="false">The y coordinate of the bottom side of the source rectangle.</Parameter>
			<Parameter Name="dx1" Type="Real" Optional="false">The x coordinate of the left side of the destination rectangle to check against.</Parameter>
			<Parameter Name="dy1" Type="Real" Optional="false">The y coordinate of the top side of the destination rectangle to check against.</Parameter>
			<Parameter Name="dx2" Type="Real" Optional="false">The x coordinate of the right side of the destination rectangle to check against.</Parameter>
			<Parameter Name="dy2" Type="Real" Optional="false">The y coordinate of the bottom side of the destination rectangle to check against.</Parameter>
		</Function>
		<Function Name="rectangle_in_triangle" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will check a rectangular area that you define to see if it is either not in collision, completely within the destination bounds, or if it is simply touching, a defined triangular area. If they are not touching at all the function will return 0, if the source is completely within the destination it will return 1, and if they are simply overlapping then it will return 2. The image below illustrates this:</Description>
			<Parameter Name="sx1" Type="Real" Optional="false">The x coordinate of the left side of the source rectangle.</Parameter>
			<Parameter Name="sy1" Type="Real" Optional="false">The y coordinate of the top side of the source rectangle.</Parameter>
			<Parameter Name="sx2" Type="Real" Optional="false">The x coordinate of the right side of the source rectangle.</Parameter>
			<Parameter Name="sy2" Type="Real" Optional="false">The y coordinate of the bottom side of the source rectangle.</Parameter>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the first side of the triangle to check.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the first side of the triangle to check.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the second side of the triangle to check.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the second side of the triangle to check.</Parameter>
			<Parameter Name="x3" Type="Real" Optional="false">The x coordinate of the third side of the triangle to check.</Parameter>
			<Parameter Name="y3" Type="Real" Optional="false">The y coordinate of the third side of the triangle to check.</Parameter>
		</Function>
		<Function Name="mp_grid_add_cell" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function we can mark individual cells within the given MP grid as being &quot;forbidden&quot; meaning that the path finding functions will not ever cross them. Now, normally you work in x/y room coordinates, and not in MP grid cell coordinates. So let&apos;s consider the following image which shows how the two can correlate:</Description>
			<Parameter Name="id" Type="Id.MpGrid" Optional="false">Index of the mp_grid that is to be used</Parameter>
			<Parameter Name="h" Type="Real" Optional="false">Horizontal position of the cell in the grid</Parameter>
			<Parameter Name="v" Type="Real" Optional="false">Vertical position of the cell in the grid</Parameter>
		</Function>
		<Function Name="mp_grid_add_instances" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function uses the instance collision mask (decided by the sprite properties or the mask index of the calling instance) to mark cells as forbidden or not in an MP grid, where forbidden cells cannot be crossed by any of the pathfinding functions. You can specify in the function whether to consider precise collisions or not and the forbidden cells marked will change depending on this setting. This image illustrates this behaviour:</Description>
			<Parameter Name="id" Type="Id.MpGrid" Optional="false">Index of the mp_grid that is to be used</Parameter>
			<Parameter Name="obj" Type="Asset.GMObject,Id.Instance" Optional="false">Object index, or instance id, of the instances to be added into the mp_grid</Parameter>
			<Parameter Name="prec" Type="Bool" Optional="false">Whether the check is based on pixel-perfect collisions (true = slow) or its bounding box in general (false = fast).</Parameter>
		</Function>
		<Function Name="mp_grid_add_rectangle" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function asks you to define a rectangle within the room, and then it marks all MP grid cells &quot;touch&quot; that rectangle as being forbidden, meaning that the path-finding functions cannot cross them. The image below illustrates how this works:</Description>
			<Parameter Name="id" Type="Id.MpGrid" Optional="false">Index of the mp_grid that is to be used</Parameter>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the left side of the rectangle to check.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the top side of the rectangle to check.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the right side of the rectangle to check.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The x coordinate of the bottom side of the rectangle to check.</Parameter>
		</Function>
		<Function Name="mp_grid_clear_all" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>With this function you can clear an MP grid of all &quot;forbidden&quot; cells.</Description>
			<Parameter Name="id" Type="Id.MpGrid" Optional="false">Index of the mp_grid that is to be used</Parameter>
		</Function>
		<Function Name="mp_grid_clear_cell" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>This function can be used to clear a specific &quot;cell&quot; of an MP grid. Cells are not calculated as room coordinates, but rather as grid coordinates, where (0,0) is the top let corner of the grid. this means that to clear a cell at a specific position in the room, we must change the x and y coordinates into cell coordinate dividing them by the resolution of the MP grid. The code example below shows how this works.</Description>
			<Parameter Name="id" Type="Id.MpGrid" Optional="false">Index of the mp_grid that is to be used</Parameter>
			<Parameter Name="h" Type="Real" Optional="false">Horizontal position of the cell to clear</Parameter>
			<Parameter Name="v" Type="Real" Optional="false">vertical position of the cell to clear</Parameter>
		</Function>
		<Function Name="mp_grid_clear_rectangle" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>With this function you can define an area in room coordinates which will then clear the corresponding cells in the specified MP grid. Even if a cell partially falls within the defined rectangular region it will be cleared.</Description>
			<Parameter Name="id" Type="Id.MpGrid" Optional="false">Index of the mp_grid that is to be used</Parameter>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the left side of the rectangle to check.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the top side of the rectangle to check.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the right side of the rectangle to check.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The x coordinate of the bottom side of the rectangle to check.</Parameter>
		</Function>
		<Function Name="mp_grid_create" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can create an mp_grid for the motion planning functions. It returns an index that should be stored in a variable for use in all the other MP grid function calls. The x and y coordinates indicate the position of the top-left corner of the grid, hcells and vcells indicate the number of horizontal and vertical cells to be created within the grid, and cell width and cell height indicate the size of the cells in pixels. You can create and maintain multiple grid structures at the same moment if you need them for different things, but be aware that each grid will require memeory, and the more cells they have the more memory they will require. Also note that the MP functions are quite processor heavy to use so the more often you call them and the higher the cell resolution then the more likely you are to have a drop in performance.</Description>
			<Parameter Name="left" Type="Real" Optional="false">Starting x coordinate of the mp_grid in the room</Parameter>
			<Parameter Name="top" Type="Real" Optional="false">Starting y coordinate of the mp_grid in the room</Parameter>
			<Parameter Name="hcells" Type="Real" Optional="false">Number of horizontal cells that the mp_grid will contain</Parameter>
			<Parameter Name="vcells" Type="Real" Optional="false">Number of vertical cells that the mp_grid will contain</Parameter>
			<Parameter Name="cellwidth" Type="Real" Optional="false">The width (in pixels) of each individual cell of the mp_grid</Parameter>
			<Parameter Name="cellheight" Type="Real" Optional="false">The height (in pixels) of each individual cell of the mp_grid</Parameter>
		</Function>
		<Function Name="mp_grid_destroy" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>You can use this function to destroy the indicated mp_grid (as defined by the function mp_grid_create()) and free up the memory allocated it. It is essential that you call this whenever the MP grid is finished with or you could potentially get a memory leak, meaning that your game will slow down over time and eventually crash.</Description>
			<Parameter Name="id" Type="Id.MpGrid" Optional="false">Index of the mp_grid that is to be destroyed</Parameter>
		</Function>
		<Function Name="mp_grid_draw" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>This function will draw the specified MP grid (as defined by mp_grid_create()), marking free cells as green and forbidden cells as red. This function is essential as a debug tool but it should be noted that it is very slow and only works when used in the draw event of the instance, and that you can set the draw alpha to change the opacity of the grid, permitting you to draw it as an overlay and see what is actually in the room at the same time.</Description>
			<Parameter Name="id" Type="Id.MpGrid" Optional="false">Index of the mp_grid that is to be drawn</Parameter>
		</Function>
		<Function Name="mp_grid_get_cell" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can check any given cell of the mp_grid to see if it has been flagged as occupied or not, giving the index of the (previously created) mp_grid and the x an y coordinates of the cell to check. If it has been occupied or the position being checked is out of the grids bounds then the function will return -1 otherwise it will return 0.</Description>
			<Parameter Name="id" Type="Id.MpGrid" Optional="false">Index of the mp_grid that is to be used</Parameter>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the grid to check.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the grid to check.</Parameter>
		</Function>
		<Function Name="mp_grid_path" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>With this function you can create a path that will navigate from a start point to a finish point using an mp_grid that you have previously defined, avoiding any obstacles that have already been added into the grid. The xstart and ystart arguments indicate the start of the path in room coordinates, while xgoal, ygoal arguments indicate the destination. You can also select either horizontal/vertical movement only, or allow full diagonal movements by specifying true in the allowdiag argument. The function returns either true (it succeeded in finding a path) or false (it failed) as well as setting the chosen path. In the following image, you can see how this all works together:</Description>
			<Parameter Name="id" Type="Id.MpGrid" Optional="false">Index of the mp_grid that is to be used</Parameter>
			<Parameter Name="path" Type="Asset.GMPath" Optional="false">index of the path that is to be used by the function</Parameter>
			<Parameter Name="x start" Type="Real" Optional="false">Starting x coordinate of the new path</Parameter>
			<Parameter Name="y start" Type="Real" Optional="false">Starting y coordinate of the new path</Parameter>
			<Parameter Name="xgoal" Type="Real" Optional="false">Finishing x coordinate of the new path</Parameter>
			<Parameter Name="ygoal" Type="Real" Optional="false">Finishing y coordinate of the new path</Parameter>
			<Parameter Name="allowdiag" Type="Bool" Optional="false">Indicates whether diagonal moves are allowed instead of just horizontal or vertical</Parameter>
		</Function>
		<Function Name="mp_grid_to_ds_grid" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>With this function you can copy the given MP grid into a DS grid. The DS grid should be the same size as the MP grid, although it doesn&apos;t have to be (data will be lost if it is smaller, and if it is larger all extra grid cells will be 0). The DS grid cells will contain the value -1 if the MP grid cell was flagged as occupied, or it will be 0 if not.</Description>
			<Parameter Name="source" Type="Id.MpGrid" Optional="false">Index of the mp_grid that is to be used</Parameter>
			<Parameter Name="destination" Type="Id.DsGrid" Optional="false">Index of the ds_grid that is to be used to copy the grid data to.</Parameter>
		</Function>
		<Function Name="mp_linear_path" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>This function computes a straight line path from the current instance position to the point specified by the &quot;xgoal&quot; and &quot;ygoal&quot; values. It uses the indicated step size, the same as in the function mp_linear_step(). The indicated path must already exist and will be overwritten by the new path and the function will return if a complete path was found (true) or not (false). If false is returned then a path is still generated, but it will only run up to the position where the path was blocked.</Description>
			<Parameter Name="path" Type="Asset.GMPath" Optional="false">The index of the path to be used.</Parameter>
			<Parameter Name="xgoal" Type="Real" Optional="false">The target x position.</Parameter>
			<Parameter Name="ygoal" Type="Real" Optional="false">The target y position.</Parameter>
			<Parameter Name="stepsize" Type="Real" Optional="false">The speed the instance moves in pixels per step.</Parameter>
			<Parameter Name="checkall" Type="Bool" Optional="false">Whether to check for collisions with all instances (true) or just solid ones (false).</Parameter>
		</Function>
		<Function Name="mp_linear_path_object" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>This function computes a straight line path from the current instance position to the point specified by the &quot;xgoal&quot; and &quot;ygoal&quot; values. It uses the indicated step size, the same as in the function mp_linear_step(). The indicated path must already exist and will be overwritten by the new path and the function will return if a complete path was found (true) or not (false). A full path is only found there was no collision with the specified object or instance and if false is returned then a path is still generated, but it will only run up to the position where the path was blocked.</Description>
			<Parameter Name="path" Type="Asset.GMPath" Optional="false">The index of the path to be used</Parameter>
			<Parameter Name="xgoal" Type="Real" Optional="false">The target x position.</Parameter>
			<Parameter Name="ygoal" Type="Real" Optional="false">The target y position.</Parameter>
			<Parameter Name="stepsize" Type="Real" Optional="false">The speed the instance moves in pixels per step.</Parameter>
			<Parameter Name="obj" Type="Asset.GMObject,Id.Instance" Optional="false">The object that is to block the path. Can be an object index, an instance id or the special keyword ,all</Parameter>
		</Function>
		<Function Name="mp_linear_step" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>With this function you tell an instance to take a &quot;step&quot; towards a specific point, specified by the xgoal and ygoal values. The size of the step (which is how many pixels the instance should move each step) is indicated by the stepsize, and if the instance is already at the position it will stop and not move any further, contrary to other, simpler functions like move_towards_point(). The stepsize is also the distance &quot;ahead&quot; that the object will check each step for a collision, and you can choose whether the instance stops at a collision with any instance or only those that are flagged as solid. The function will return whether it has reached the goal position (true) or if it has failed (false).</Description>
			<Parameter Name="xgoal" Type="Real" Optional="false">The target x position.</Parameter>
			<Parameter Name="ygoal" Type="Real" Optional="false">The target y position.</Parameter>
			<Parameter Name="stepsize" Type="Real" Optional="false">The speed the instance moves in pixels per step.</Parameter>
			<Parameter Name="checkall" Type="Real" Optional="false">Whether to check all instances (true) or just solid ones (false).</Parameter>
		</Function>
		<Function Name="mp_linear_step_object" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>With this function you tell an instance to take a &quot;step&quot; towards a specific point, specified by the xgoal and ygoal values. The size of the step (which is how many pixels the instance should move each step) is indicated by the stepsize, and if the instance is already at the position it will stop and not move any further, contrary to other, simpler functions like move_towards_point(). The stepsize is also the distance &quot;ahead&quot; that the object will check each step for a collision, and you can choose whether the instance stops at a collision with an object or instance of your choice.</Description>
			<Parameter Name="xgoal" Type="Real" Optional="false">The target x position.</Parameter>
			<Parameter Name="ygoal" Type="Real" Optional="false">The target y position.</Parameter>
			<Parameter Name="stepsize" Type="Real" Optional="false">The speed the instance moves in pixels per step.</Parameter>
			<Parameter Name="obj" Type="Asset.GMObject,Id.Instance" Optional="false">The object that is to block the path. Can be an object index, an instance id or the special keyword, all</Parameter>
		</Function>
		<Function Name="mp_potential_path" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>This function computes a path for the instance from its current position and orientation to the position specified by the xgoal,ygoal arguments. It uses the indicated step size while trying to avoid collision with either all instances or only those flagged as solid. Like in the function mp_potential_step() it uses potential field steps to accomplish this and the manner in which it does this can be modified through the function mp_potential_settings(). The indicated path must already exist and it will be overwritten by the new path. The function will return whether a path was found (true) or not (false).</Description>
			<Parameter Name="path" Type="Id.MpGrid" Optional="false">index of the path that is to be used by the function</Parameter>
			<Parameter Name="xgoal" Type="Real" Optional="false">The target x position.</Parameter>
			<Parameter Name="ygoal" Type="Real" Optional="false">The target y position.</Parameter>
			<Parameter Name="stepsize" Type="Real" Optional="false">The speed the instance moves in pixels per step.</Parameter>
			<Parameter Name="factor" Type="Real" Optional="false">This number is used to prevent an infinite loop. It should be larger than 1. See the function description for more information.</Parameter>
			<Parameter Name="checkall" Type="Bool" Optional="false">Whether to check all instances (true) or just solid ones (false).</Parameter>
		</Function>
		<Function Name="mp_potential_path_object" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>This function computes a path for the instance from its current position and orientation to the position specified by the xgoal, ygoal arguments. It uses the indicated step size while trying to avoid collision with instances of the object specified by the &quot;obj&quot; argument. Like in the function mp_potential_step() it uses potential field steps to accomplish this and the manner in which it does this can be modified through the function mp_potential_settings(). The indicated path must already exist and it will be overwritten by the new path. The function will return whether a path was found (true) or not (false).</Description>
			<Parameter Name="path" Type="Asset.GMPath" Optional="false">index of the path that is to be used by the function</Parameter>
			<Parameter Name="xgoal" Type="Real" Optional="false">The target x position.</Parameter>
			<Parameter Name="ygoal" Type="Real" Optional="false">The target y position.</Parameter>
			<Parameter Name="stepsize" Type="Real" Optional="false">The speed the instance moves in pixels per step.</Parameter>
			<Parameter Name="factor" Type="Real" Optional="false">This number is used to prevent an infinite loop. It should be larger than 1. See the function description for more information.</Parameter>
			<Parameter Name="obj" Type="Id.Instance,Asset.GMObject,Constant.All" Optional="false">The object that is to block the path. Can be an object index, an instance id or the special keyword ,all</Parameter>
		</Function>
		<Function Name="mp_potential_settings" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>The mp_potential_ functions do their work using a number of parameters that can be changed using this function. Globally the method works as follows: it first tries to move straight towards the goal, looking a number of steps ahead which can be set with the parameter &quot;ahead&quot; (default value is 3). Reducing this value means that the instance will start changing direction later as it doesn&apos;t &quot;see&quot; as far ahead, and increasing it means it will start changing direction earlier. If this check leads to a collision then it starts looking at directions more to the left and to the right of the ideal, straight-line direction. It does this in steps of size &quot;rotstep&quot; (default value is 10), and reducing this gives the instance more movement possibilities but will be slower as it needs more processing power.</Description>
			<Parameter Name="maxrot" Type="Real" Optional="false">The number of degrees either side of the current direction that the instance can rotate in a step</Parameter>
			<Parameter Name="rotstep" Type="Real" Optional="false">The number of degrees either side of the current direction that the instance can check for a collision</Parameter>
			<Parameter Name="ahead" Type="Real" Optional="false">The number of steps ahead that the instance can check for a collision. Larger values are slower than lower ones.</Parameter>
			<Parameter Name="onspot" Type="Bool" Optional="false">Use this to allow the instance to rotate on the spot when no path is found (true) or not (false)</Parameter>
		</Function>
		<Function Name="mp_potential_step" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>This function lets the instance take a step towards a particular position defined by xgoal/ygoal, all the while trying to avoid obstacles. When the instance would run into a solid instance (or any instance when checkall is true) it will change the direction of motion to try to avoid that instance and move around it. This approach is not guaranteed to work but in most easy cases it will effectively move the instance towards the goal. The function returns whether the goal was reached or not.</Description>
			<Parameter Name="xgoal" Type="Real" Optional="false">The target x position.</Parameter>
			<Parameter Name="ygoal" Type="Real" Optional="false">The target y position.</Parameter>
			<Parameter Name="stepsize" Type="Real" Optional="false">The speed the instance moves in pixels per step.</Parameter>
			<Parameter Name="checkall" Type="Bool" Optional="false">Whether to check all instances (true) or just solid ones (false).</Parameter>
		</Function>
		<Function Name="mp_potential_step_object" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>This function lets the instance take a step towards a particular position defined by xgoal/ygoal, all the while trying to avoid obstacles. When the instance would run into an instance of the object specified by the &quot;obj&quot; argument it will change the direction of motion to try to avoid that instance and move around it. This approach is not guaranteed to work but in most easy cases it will effectively move the instance towards the goal. The function returns whether the goal was reached or not.</Description>
			<Parameter Name="xgoal" Type="Real" Optional="false">The target x position.</Parameter>
			<Parameter Name="ygoal" Type="Real" Optional="false">The target y position.</Parameter>
			<Parameter Name="stepsize" Type="Real" Optional="false">The speed the instance moves in pixels per step.</Parameter>
			<Parameter Name="obj" Type="Id.Instance" Optional="false">The object that is to block the path of the instance running the function. Can be an object index, an instance id or the special keyword ,all.</Parameter>
		</Function>
		<Function Name="motion_add" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will modify the current direction and speed of the instance running the code, combining the values given with the current values. If you wish to simply change these values, you should be using the function motion_set().</Description>
			<Parameter Name="dir" Type="Real" Optional="false">The added direction.</Parameter>
			<Parameter Name="speed" Type="Real" Optional="false">The added speed.</Parameter>
		</Function>
		<Function Name="motion_set" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function sets a new direction of movement and a new speed to the instance running the code. Note that this does not add to the instances current speed and direction (for that you would use motion_add()) but rather forces it to the new settings.</Description>
			<Parameter Name="dir" Type="Real" Optional="false">The new direction.</Parameter>
			<Parameter Name="speed" Type="Real" Optional="false">The new speed.`</Parameter>
		</Function>
		<Function Name="move_bounce_all" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can command an instance to bounce off all instances within the room, with the only exception being those that have no sprite or mask index assigned to them. You can also tell it to use precise collision checking when enabled, but be aware that this requires all instances to have precise masks enabled and will greatly slow down your game when many instances are involved due to the amount of processing that has to be done. This should normally go in the step event of an instance, but can be used selectively in a collision event too, as illustrated by the code example below.</Description>
			<Parameter Name="adv" Type="Bool" Optional="false">Whether to enable advanced bouncing (true) or not (false).</Parameter>
		</Function>
		<Function Name="move_bounce_solid" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can command an instance to bounce off only those instances marked as solid within the room. You can also tell it to use precise collision checking when enabled, but be aware that this requires all instances to have precise masks enabled and will greatly slow down your game when many instances are involved due to the amount of processing that has to be done. This should normally go in the step event of an instance, but can be used selectively in a collision event too.</Description>
			<Parameter Name="adv" Type="Bool" Optional="false">Whether to enable advanced bouncing (true) or not (false).</Parameter>
		</Function>
		<Function Name="move_contact_all" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will move the instance running the code a set number of pixels in the specified direction until it meets any other instance with a valid mask. You can use -1 or 0 for the maxdist being a default 1000px, ie: GameMaker will move the instance continually up 1000 pixels until it is out of collision.</Description>
			<Parameter Name="dir" Type="Real" Optional="false">The direction to move in.</Parameter>
			<Parameter Name="maxdist" Type="Real" Optional="false">The maximum distance the object can travel (-1 or 0 a default value of 1000 pixels).</Parameter>
		</Function>
		<Function Name="move_contact_solid" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will move the instance running the code a set number of pixels in the specified direction until it meets an instance with solid flagged as true. You can use -1 or 0 for the maxdist being a default 1000px, ie: GameMaker will move the instance continually up 1000 pixels until it is out of collision.</Description>
			<Parameter Name="dir" Type="Real" Optional="false">The direction to move in.</Parameter>
			<Parameter Name="maxdist" Type="Real" Optional="false">The maximum distance the object can travel (-1 or 0 a default value of 1000 pixels).</Parameter>
		</Function>
		<Function Name="move_outside_all" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can tell an instance to move out of a collision in any direction and any number of pixels each step, with a value of -1 or 0 for the maxdist being a default 1000px, ie: GameMaker will move the instance continually up 1000 pixels until it is out of collision.</Description>
			<Parameter Name="dir" Type="Real" Optional="false">The direction to move in.</Parameter>
			<Parameter Name="maxdist" Type="Real" Optional="false">The maximum distance the object can travel (-1 or 0 a default value of 1000 pixels).</Parameter>
		</Function>
		<Function Name="move_and_collide" Deprecated="false" ReturnType="Array" Pure="false">
			<Description>With this function you can tell an instance to move in a direction, resolving collisions on the way and specify a direction in which the instance will attempt to move to get past obstacles, thus allowing traversal of slopes or small steps. Returns an array of instances that it has collided with.</Description>
			<Parameter Name="dx" Type="Real" Optional="false">The x component of direction to move in.</Parameter>
			<Parameter Name="dy" Type="Real" Optional="false">The y component of direction to move in.</Parameter>
			<Parameter Name="obj" Type="Asset.GMObject,Constant.All" Optional="false">The object to check for collisions with.</Parameter>
			<Parameter Name="num_iterations" Type="Real" Optional="true">The number of steps the motion will be broken down into to resolve collisions, defaults to 4</Parameter>
			<Parameter Name="xoff" Type="Real" Optional="true">The x component of direction to move to attempt to avoid obstacles. If not specified the perpendicular to the direction of movement is used.</Parameter>
			<Parameter Name="yoff" Type="Real" Optional="true">The y component of direction to move to attempt to avoid obstacles. If not specified the perpendicular to the direction of movement is used.</Parameter>
			<Parameter Name="max_x_distance" Type="Real" Optional="true">The maximum distance in the x direction the instance will move. If less than or equal to 0 no clamping is performed.</Parameter>
			<Parameter Name="max_y_distance" Type="Real" Optional="true">The maximum distance in the y direction the instance will move. If less than or equal to 0 no clamping is performed.</Parameter>				
		</Function>
		<Function Name="move_outside_solid" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can tell an instance to move out of a collision with any instance flagged as solid in any direction and any number of pixels each step, with a value of -1 or 0 for the maxdist being a default 1000px, ie: GameMaker will move the instance continually up 1000 pixels until it is out of collision.</Description>
			<Parameter Name="dir" Type="Real" Optional="false">The direction to move in.</Parameter>
			<Parameter Name="maxdist" Type="Real" Optional="false">The maximum distance the object can travel (-1 or 0 a default value of 1000 pixels).</Parameter>
		</Function>
		<Function Name="move_random" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the instance to a position anywhere in the room, but aligned to an &quot;invisible&quot; grid. So a value of 32 for the hsnap and vsnap will set the instance to a random position that is aligned to a grid of 32x32 squares. you can set these values to 1 to get a position anywhere in the room.</Description>
			<Parameter Name="hsnap" Type="Real" Optional="false">The horizontal snapping (the size in pixels between &apos;cells&apos;).</Parameter>
			<Parameter Name="vsnap" Type="Real" Optional="false">The vertical snapping (the size in pixels between &apos;cells&apos;).</Parameter>
		</Function>
		<Function Name="move_snap" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function is used to &quot;snap&quot; the instance to a grid of a given size. It will be snapped to the nearest corresponding position on the &quot;invisible&quot; grid that the hsnap and vsnap values define.</Description>
			<Parameter Name="hsnap" Type="Real" Optional="false">The horizontal snapping (the size in pixels between &apos;cells&apos;).</Parameter>
			<Parameter Name="vsnap" Type="Real" Optional="false">The vertical snapping (the size in pixels between &apos;cells&apos;).</Parameter>
		</Function>
		<Function Name="move_towards_point" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function simply tells the instance running the code to move towards a set point at a set speed. Bear in mind that it is up to you to tell it what to do once it gets there, as it won&apos;t just stop by itself. This means that you can get a &quot;vibrating&quot; instance as it moves (for example) 3 pixels forward, overshoots the x/y target position by 2, then moves 3 pixels back again, overshooting the target point by one and so on... There are a number of ways that this can be avoided, for example using distance_to_point() to see how far from the specified location the instance is before moving.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x position of the point to move towards.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position of the point to move towards.</Parameter>
			<Parameter Name="sp" Type="Real" Optional="false">The speed to move at in pixels per step.</Parameter>
		</Function>
		<Function Name="move_wrap" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will automatically &quot;wrap&quot; an instance that has left the room on either the horizontal or vertical (or both) axis. You can specify a margin outside the edges of the room for this to occur, and when the instance has travelled outside of that margin GameMaker will automatically wrap it back into the room at the other side. Note that the instance must have a speed for wrapping to work, because the direction of wrapping is based on the direction of the motion.</Description>
			<Parameter Name="hor" Type="Bool" Optional="false">Whether to wrap horizontally (true) or not (false).</Parameter>
			<Parameter Name="vert" Type="Bool" Optional="false">Whether to wrap vertically (true) or not (false).</Parameter>
			<Parameter Name="margin" Type="Real" Optional="false">How far outside the room, in pixels, the object must be to initiate wrapping.</Parameter>
		</Function>
		<Function Name="place_snapped" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check and see if the origin of an instance (its x and y position) is aligned to a grid with the hsnap and vsnap values specified by you.</Description>
			<Parameter Name="hsnap" Type="Real" Optional="false">The horizontal snapping to check.</Parameter>
			<Parameter Name="vsnap" Type="Real" Optional="false">The vertical snapping to check.</Parameter>
		</Function>
		<Function Name="network_connect" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can send a request to connect to a server. The function takes the socket id to connect through (see network_create_socket()) and requires you to give the IP address to connect to (a string) as well as the port to connect through, and if the connection fails a value of less than 0 will be returned. The connection uses a special protocol that ensures only GameMaker games connect to each other, however if you need to connect to a server that is not a GameMaker game, you can use network_connect_raw(). Note that by default the function is synchronous, meaning that your game may appear to &quot;hang&quot; as the connection is made. You can set a timeout value for connection, or alternatively make the creation asynchronous, using the function network_set_config(), or alternatively use the function network_connect_async() instead.</Description>
			<Parameter Name="socket" Type="Id.Socket" Optional="false">The id of the socket to use.</Parameter>
			<Parameter Name="url" Type="String" Optional="false">The URL or IP to connect to (a string).</Parameter>
			<Parameter Name="port" Type="Real" Optional="false">The port to connect to.</Parameter>
		</Function>
		<Function Name="network_connect_async" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can send a request to connect to a server. The function takes the socket id to connect through (see network_create_socket()) and requires you to give the IP address to connect to (a string) as well as the port to connect through, and if the connection fails a value of less than 0 will be returned. The connection uses a special protocol that ensures only GameMaker games connect to each other, however if you need to connect to a server that is not a GameMaker game, you can use network_connect_async_raw(). Note that this function is asynchronous, generating an Asynchronous Networking event of the type network_type_non_blocking_connect.</Description>
			<Parameter Name="socket" Type="Id.Socket" Optional="false">The id of the socket to use.</Parameter>
			<Parameter Name="url" Type="String" Optional="false">The URL or IP to connect to (a string).</Parameter>
			<Parameter Name="port" Type="Real" Optional="false">The port to connect to.</Parameter>
		</Function>
		<Function Name="network_connect_raw" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can send a request to connect to a server. The function takes the socket id to connect through (see network_create_socket()) and requires you to give the IP address to connect to (a string) as well as the port to connect through, and if the connection fails a value of less than 0 will be returned. The difference between this function and network_connect() is that this function can connect to any server and does nothing to the raw data, meaning that you have to implement the protocols yourself at the server end. Note that by default the function is synchronous, meaning that your game may appear to &quot;hang&quot; as the connection is made. You can set a timeout value for connection, or alternatively make the creation asynchronous, using the function network_set_config(), or alternatively use the function network_connect_async_raw() instead.</Description>
			<Parameter Name="socket" Type="Id.Socket" Optional="false">The id of the socket to use.</Parameter>
			<Parameter Name="url" Type="String" Optional="false">The URL or IP to connect to (a string).</Parameter>
			<Parameter Name="port" Type="Real" Optional="false">The port to connect to.</Parameter>
		</Function>
		<Function Name="network_connect_raw_async" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can send a request to connect to a server. The function takes the socket id to connect through (see network_create_socket()) and requires you to give the IP address to connect to (a string) as well as the port to connect through, and if the connection fails a value of less than 0 will be returned. The difference between this function and network_connect_async()is that this function can connect to any server and does nothing to the raw data, meaning that you have to implement the protocols yourself at the server end. Note that this function is asynchronous, generating an Asynchronous Networking event of the type network_type_non_blocking_connect.</Description>
			<Parameter Name="socket" Type="Id.Socket" Optional="false">The id of the socket to use.</Parameter>
			<Parameter Name="url" Type="String" Optional="false">The URL or IP to connect to (a string).</Parameter>
			<Parameter Name="port" Type="Real" Optional="false">The port to connect to.</Parameter>
		</Function>
		<Function Name="network_create_server" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function is used to create a new network server for your game, using one of the permitted connection protocols (see the constants listed below). You supply the server type, then give it a port to use, and finally the number of maximum connections that should be permitted at any one time to the server (note that this number is up to you, but too many connected clients will saturate the network or the device CPU won&apos;t be able to handle the processing of that number of players, so use with care). The function returns a unique id which should be used stored in a variable and used to identify the server in all further network functions, or a value of less than 0 if the connection fails.</Description>
			<Parameter Name="type" Type="Constant.SocketType" Optional="false">The type of server to create (see the constants listed below).</Parameter>
			<Parameter Name="port" Type="Real" Optional="false">The port that the server will use.</Parameter>
			<Parameter Name="max_client" Type="Real" Optional="false">The maximum number of clients that can connect at once.</Parameter>
		</Function>
		<Function Name="network_create_server_raw" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function is used to create a new network server for your game, using one of the permitted connection protocols (see the constants listed below). You supply the server type, then give it a port to use, and finally the number of maximum connections that should be permitted at any one time to the server (note that this number is up to you, but too many connected clients will saturate the network or the device CPU won&apos;t be able to handle the processing of that number of players, so use with care). The function returns a unique id which should be used stored in a variable and used to identify the server in all further network functions, or a value of less than 0 if the connection fails.</Description>
			<Parameter Name="type" Type="Constant.SocketType" Optional="false">The type of server to create (see the constants listed below).</Parameter>
			<Parameter Name="port" Type="Real" Optional="false">The port that the server will use.</Parameter>
			<Parameter Name="max_client" Type="Real" Optional="false">The maximum number of clients that can connect at once.</Parameter>
		</Function>
		<Function Name="network_create_socket" Deprecated="false" ReturnType="Id.Socket" Pure="true">
			<Description>This function is used to create a new client socket for your game to communicate over the network. You must define the socket type (see the list of constants below) and the function will return a unique id for that socket, which should be used in all further function calls for that socket, or a value of less than 0 if the connection fails.</Description>
			<Parameter Name="type" Type="Constant.SocketType" Optional="false">The type of socket connection to create (see the constants listed below).</Parameter>
		</Function>
		<Function Name="network_create_socket_ext" Deprecated="false" ReturnType="Id.Socket" Pure="true">
			<Description>This function is used to create a new client socket for your game to communicate over the network. You must define the socket protocol (see the list of constants below) and give a port to use, and the function will return a unique id which should be used in all further function calls for that socket, or a value of less than 0 if the connection fails.</Description>
			<Parameter Name="protocol" Type="Constant.SocketType" Optional="false">The network protocol to use</Parameter>
			<Parameter Name="port" Type="Real" Optional="false">The port to use</Parameter>
		</Function>
		<Function Name="network_destroy" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can remove a network socket connection from your game.</Description>
			<Parameter Name="socket" Type="Id.Socket" Optional="false">The id of the socket to remove.</Parameter>
		</Function>
		<Function Name="network_resolve" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function will return the IP address of the given URL.</Description>
			<Parameter Name="url" Type="String" Optional="false">The URL to get the IP of (a string).</Parameter>
		</Function>
		<Function Name="network_send_broadcast" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can broadcast the data from a buffer locally to a range of IP addresses (for more information on buffers see Reference - Buffers). The range is limited to that of the device running the server, such that if the device has an IP of 92.168.11.130, then the data will be broadcast over the range 92.168.11.*. The function will return the number of bytes of data sent, or a number less than 0 if the send has failed.</Description>
			<Parameter Name="socket" Type="Id.Socket" Optional="false">The id of the socket to use.</Parameter>
			<Parameter Name="port" Type="Real" Optional="false">The port that the server will use.</Parameter>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The id of the buffer to get the data from.</Parameter>
			<Parameter Name="size" Type="Real" Optional="false">The size (in bytes) of the data.</Parameter>
		</Function>
		<Function Name="network_send_packet" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can send a data &quot;packet&quot; through the network. The function takes the socket id to connect through and then you must supply the buffer id which contains the data to be sent (for more information on buffers see Reference - Buffers) and finally the size (in bytes) of the data packet. Packets sent with this function are formatted such that the GameMaker game receiving the data can &quot;split&quot; the packets correctly, and the function will return the number of bytes of data sent, or a number less than 0 if the send has failed. It is worth noting that the final size of the data being sent that is returned by this function will also include the GameMaker header information, which is an additional 12 bytes.</Description>
			<Parameter Name="socket" Type="Id.Socket" Optional="false">The id of the socket to use.</Parameter>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The id of the buffer to get the data from.</Parameter>
			<Parameter Name="size" Type="Real" Optional="false">The size (in bytes) of the data.</Parameter>
		</Function>
		<Function Name="network_send_raw" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can send a &quot;raw&quot; data packet through the network. The function takes the socket id to connect through and then you must supply the buffer id which contains the data to be sent (for more information on buffers see Reference - Buffers) and finally the size (in bytes) of the data packet. The data sent is not formatted by GameMaker in any way and the receiving devices will get the data as a stream which means you will have to handle it yourself. The function will return the number of bytes of data sent, or a number less than 0 if the send has failed.</Description>
			<Parameter Name="socket" Type="Id.Socket" Optional="false">The id of the socket to use.</Parameter>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The id of the buffer to get the data from.</Parameter>
			<Parameter Name="size" Type="Real" Optional="false">The size (in bytes) of the data.</Parameter>
			<Parameter Name="options" Type="Real" Optional="true">Optional flags to affect how the data is sent.</Parameter>
		</Function>
		<Function Name="network_send_udp" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can send data over the network using UDP to a server. The function takes the socket id to connect through, the URL to connect to and the port to use. You must then supply the buffer id which contains the data to be sent (for more information on buffers see Reference - Buffers) and finally the size (in bytes) of the data. UDP is &quot;connectionless&quot; in that you don&apos;t actually do a connect, you just send a packet directly to an IP, and the server gets incoming data from an IP address and has to deal with it &quot;as is&quot;. The function will return the number of bytes of data sent, or a number less than 0 if the send has failed. It is worth noting that the final size of the data being sent that is returned by this function will also include the GameMaker header information, which is an additional 12 bytes.</Description>
			<Parameter Name="socket" Type="Id.Socket" Optional="false">The id of the socket to use.</Parameter>
			<Parameter Name="url" Type="String" Optional="false">The url or IP to connect to (a string).</Parameter>
			<Parameter Name="port" Type="Real" Optional="false">The port to connect to.</Parameter>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The id of the buffer to get the data from.</Parameter>
			<Parameter Name="size" Type="Real" Optional="false">The size (in bytes) of the data.</Parameter>
		</Function>
		<Function Name="network_send_udp_raw" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can send data over the network using UDP to a server. The function takes the socket id to connect through, the URL to connect to and the port to use. You must then supply the buffer id which contains the data to be sent (for more information on buffers see Reference - Buffers) and finally the size (in bytes) of the data. UDP is &quot;connectionless&quot; in that you don&apos;t actually do a connect, you just send a packet directly to an IP, and the server gets incoming data from an IP address and has to deal with it &quot;as is&quot;. The data sent is not formatted by GameMaker in any way and the receiving devices will get the data as a stream which means you will have to handle it yourself. The function will return the number of bytes of data sent, or a number less than 0 if the send has failed.</Description>
			<Parameter Name="socket" Type="Id.Socket" Optional="false">The id of the socket to use.</Parameter>
			<Parameter Name="url" Type="String" Optional="false">The url or IP to connect to (a string).</Parameter>
			<Parameter Name="port" Type="Real" Optional="false">The port to connect to.</Parameter>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The id of the buffer to get the data from.</Parameter>
			<Parameter Name="size" Type="Real" Optional="false">The size (in bytes) of the data.</Parameter>
		</Function>
		<Function Name="network_set_config" Deprecated="false" ReturnType="String" Pure="false">
			<Description>With this function you can set different network configurations.</Description>
			<Parameter Name="config_value" Type="Constant.NetworkConfig" Optional="false">The config constant to set (refer to the table at the top of this page).</Parameter>
			<Parameter Name="setting" Type="Any" Optional="false">The setting of the config value.</Parameter>
		</Function>
		<Function Name="network_set_timeout" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the timeout for reading and writing data to/from a server through the given socket. Note that the timeout does not generate any type of event, so you will need to deal with timeouts yourself using alarms (for example). Note that this value only affects the sending and receiving of data, and should you wish to change the connection timeout value then you should be using the function network_set_config().</Description>
			<Parameter Name="socket" Type="Id.Socket" Optional="false">The id of the socket to use.</Parameter>
			<Parameter Name="read_timeout" Type="Real" Optional="false">The milliseconds in which a transfer from a server will timeout.</Parameter>
			<Parameter Name="write_timeout" Type="Real" Optional="false">The milliseconds in which a transfer to a server will timeout.</Parameter>
		</Function>
		<Function Name="environment_get_variable" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function returns the value (a string) of the environment variable with the given name (also a string). You can get the available environment variables on macOS and Ubuntu (Linux) by typing &quot;env&quot; into the terminal app, and for information on Windows environment variables, if you are using the command prompt then type &quot;echo %PATH%&quot;, and using PowerShell it&apos;s &quot;ls env&quot;. Note that on both macOS and Ubuntu (Linux) the &quot;HOME&quot; environment variable will return the &quot;~/&quot; path which maps to &quot;/Users/&lt;username&gt;&quot; on macOS and &quot;/home/&lt;username&gt;&quot; on Ubuntu (Linux).</Description>
			<Parameter Name="name" Type="String" Optional="false">The name (a string) of the environment variable to check.</Parameter>
		</Function>
		<Function Name="external_call" Deprecated="false" ReturnType="Any" Pure="false">
			<Description>If you have created an external function call to a dll or dylib using external_define(), you can use this function to then call it. You supply the name of the previously defined function as well as each of the arguments it requires (each argument must be of the correct type, either real or string) and the function returns the result of the external call.</Description>
			<Parameter Name="id" Type="Id.ExternalCall" Optional="false">The name of the function that you want to call</Parameter>
			<Parameter Name="..." Type="Any" Optional="true">The different arguments that you want to pass through to the external function</Parameter>
		</Function>
		<Function Name="external_define" Deprecated="false" ReturnType="Id.ExternalCall" Pure="false">
			<Description>This function can be used to define an external function call to a specific dll (for Windows) or dylib (for Mac). This file can be either an included file or part of an extension. You supply the name (and path) of the file, then the name of the function that you wish to define. Next you need to define the calling convention to be used (see the constants list below) as well as the type of result to be expected (also a constant, as listed below). Finally you must give the number arguments that the function can take (from 0 to 15) and for each of the arguments you must specify its type too. Please note that for functions with 4 or more arguments, all of them must be of type ty_real.</Description>
			<Parameter Name="dll" Type="String" Optional="false">The name of the dll file (string)</Parameter>
			<Parameter Name="name" Type="String" Optional="false">The name of the function (string)</Parameter>
			<Parameter Name="calltype" Type="Constant.ExternalCallType" Optional="false">The calling convention used</Parameter>
			<Parameter Name="restype" Type="Constant.ExternalArgumentType" Optional="false">The type of the result to expect</Parameter>
			<Parameter Name="argnumb" Type="Real" Optional="false">The number of arguments (0 - 10)</Parameter>
			<Parameter Name="..." Type="Constant.ExternalArgumentType" Optional="true">The different types of arguments being used</Parameter>
		</Function>
		<Function Name="external_free" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function frees the memory associated with the dll or dylib with the given name. This should be done whenever the file in question is no longer needed in the game, normally (for example) in a Game End event.</Description>
			<Parameter Name="id" Type="String" Optional="false">The name of the dll or dylib that you want to free</Parameter>
		</Function>
		<Function Name="gml_pragma" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>The gml_pragma function affects how the given target compiles your code and should be called with the different commands to further optimise the final compilation of your project. These commands are effectively pre-processed before the game is compiled and so the function can be placed anywhere in your project and it will still be processed before the game is fully compiled. The available commands are as follows:</Description>
			<Parameter Name="command" Type="String" Optional="false">A string with one of the commands listed below.</Parameter>
			<Parameter Name="optional" Type="Any" Optional="true">Some of the available commands require an optional argument or arguments. These are explained below for each command.</Parameter>
		</Function>
		<Function Name="gml_release_mode" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>When your game is compiled, it also includes certain internal functions to error check while running. These internal checks cover many aspects of a games code, including ranges, parameters and some general aspects of the internal GML compiler and are what spawn the final error messages in many cases. However this function can be used to switch these internal checks off (ie: remove them completely from the compiled game), giving a speed boost to your final project.</Description>
			<Parameter Name="flag" Type="Bool" Optional="false">Either true to set release mode or false for general development.</Parameter>
		</Function>
		<Function Name="os_check_permission" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>With this function you can check to see if a specific permission has been granted to the game by the user. You supply the permission to check as a string using the format &quot;android.permission.&lt;permission&gt;&quot;, so to check the RECORD_AUDIO permission (for example) you would call</Description>
			<Parameter Name="permission" Type="String" Optional="false">The permission to request (a string)</Parameter>
		</Function>
		<Function Name="os_get_config" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function returns the name (as a string) of the currently selected configuration for your game. For more information on configurations please see the section Configurations.</Description>
		</Function>
		<Function Name="os_get_info" Deprecated="false" ReturnType="Id.DsMap" Pure="true">
			<Description>This function returns a DS Map with detailed information about the OS that the game is running on. The exact information returned will depend on the OS and the device, so it is recommended that you test this function on all platforms that you wish to target and output the returned values using a function like show_debug_message(). Note that the DS map is not automatically cleared from memory and you should use the ds_map_destroy() function when you no longer need it.</Description>
		</Function>
		<Function Name="os_get_language" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function returns a string with the two letter Language Code for the OS that is running the game, as set by the ISO639 standard. If the information is not available, it will hold simply an empty string &quot;&quot;, or &quot;en&quot; for &quot;English&quot; language. Note that some languages also have a relevant Regional Code too, so to distinguish between different regions of the same country use the function os_get_region().</Description>
		</Function>
		<Function Name="os_get_region" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function returns a string with the two or three letter Regional Code for the OS that is running the game, as set by the ISO3166-1 standard. If the information is not available, it will hold simply an empty string &quot;&quot;.</Description>
		</Function>
		<Function Name="os_is_network_connected" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check and see if your device currently has an internet connection and it will return true if it does, or false if it does not, and depending on the OS, it may attempt to make a connection before returning a value.</Description>
			<Parameter Name="attempt_connection" Type="Constant.NetworkConnectType" Optional="true">OPTIONAL! For Nintendo Switch Target only. Set to true to attempt an OS level connection when called.</Parameter>
		</Function>
		<Function Name="os_is_paused" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>When developing for mobile devices, you need to have a way to check that the device is still focused on your game or not, especially as if your game is on an iOS, Android or Windows Phone device then it can be interrupted by phone calls and other apps. You can use this function to check if the device is paused or not.</Description>
		</Function>
		<Function Name="os_lock_orientation" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can &quot;lock&quot; your device to the current orientation until such time as you &quot;free&quot; it to allow all Game Options enabled orientations again for that target platform. Note that you likely want to confirm the orientation is as desired before locking.</Description>
			<Parameter Name="flag" Type="Bool" Optional="false">Set to true or false to enable or disable orientation locking.</Parameter>
		</Function>
		<Function Name="os_set_orientation_lock" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can &quot;lock&quot; your device to the current orientation until such time as you &quot;free&quot; it to allow all Game Options enabled orientations again for that target platform. Note that you likely want to confirm the orientation is as desired before locking.</Description>
			<Parameter Name="landscape_enable" Type="Bool" Optional="false">true if landscape orientation is allowed, false otherwise</Parameter>
			<Parameter Name="portrait_enable" Type="Bool" Optional="false">true if portait orientation is allowed, false otherwise</Parameter>
		</Function>
		<Function Name="os_powersave_enable" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can turn on or off the power saving features of the device. This is important as certain games (for example those that use the tilt functions) may not generate events that the OS can interpret as being user input and so shut down the screen or exit the game. By setting this function to false you can disable the power saving features and ensure that the screen (and game) are always functioning.</Description>
			<Parameter Name="flag" Type="Bool" Optional="false">Set to true or false to enable or disable powersave functions.</Parameter>
		</Function>
		<Function Name="parameter_count" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Command-line parameters are those extra commands that you can add to an exe to change how the program is run. You can find the number of parameters for the current game using this function, where the first parameter has index 1 and the last one has the index returned by the function (a value of 0 is special on that it is the filename of the game executable, including the path). It should be noted that this function will work for on the HTML5 platform, retrieving the url parameters.</Description>
		</Function>
		<Function Name="parameter_string" Deprecated="false" ReturnType="String" Pure="true">
			<Description>Command-line parameters are those extra commands that you can add to an exe to change how the program is run and with this function you can get the chosen command-line parameter as a string. You can find the number of parameters for the current game using the function parameter_count(), where the first parameter has index 1 and the last one has the index returned by the function (a value of 0 is special on that it is the filename of the game executable, including the path). It should be noted that this function will work for on the HTML5 platform, retrieving the url parameters.</Description>
			<Parameter Name="n" Type="Real" Optional="false" />
		</Function>
		<Function Name="scheduler_resolution_get" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function is used to retrieve the resolution of the Windows thread scheduler in milliseconds. If the scheduler&apos;s resolution is set to the default value (as set by Windows), the function will return -1.</Description>
		</Function>
		<Function Name="scheduler_resolution_set" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function is used to change the resolution of the Windows thread scheduler. The resolution value supplied in the argument needs to be in milliseconds.</Description>
			<Parameter Name="milliseconds" Type="Real" Optional="false">The new resolution value (in milliseconds) or -1 for default</Parameter>
		</Function>
		<Function Name="physics_mass_properties" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function can be used to set custom mass and inertia values for a physics enabled instance. Normally the mass, center of mass, and inertia for an instance is calculated using a combination the surface area of the bound fixtures and their density. However in very special occasions you may need to offset the center of mass or change the inertia and that is when you would use this function. Bear in mind that the mass is calculated in real world weight (ie:kilograms) and you should always try and keep values realistic for what you are modelling. So if your physics object is meant to represent a person, their mass would be approximately 70 kilos.</Description>
			<Parameter Name="mass" Type="Real" Optional="false">The new mass that you want the fixture to have.</Parameter>
			<Parameter Name="local_center_x" Type="Real" Optional="false">The local x coordinate of the new center of mass.</Parameter>
			<Parameter Name="local_center_y" Type="Real" Optional="false">The local y coordinate of the new center of mass.</Parameter>
			<Parameter Name="inertia" Type="Real" Optional="false">Set the inertia for the fixture.</Parameter>
		</Function>
		<Function Name="physics_test_overlap" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function can be used to check and see if a physical body (ie: the fixture of an instance) overlaps, or will overlap, when rotated and placed at a given position in the room. the &quot;angle&quot; argument is the angle of rotation that the calling instance has (or will have) at the position to be checked, and the &quot;obj&quot; argument can be either a single instance id, and object index or the keywords all or other.</Description>
			<Parameter Name="xpos" Type="Real" Optional="false">The x position in the room to check</Parameter>
			<Parameter Name="ypos" Type="Real" Optional="false">The y position in the room to check</Parameter>
			<Parameter Name="angle" Type="Real" Optional="false">The angle to check (of the calling instance)</Parameter>
			<Parameter Name="obj" Type="Asset.GMObject" Optional="false">The object to check for</Parameter>
		</Function>
		<Function Name="physics_fixture_add_point" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function defines the points of a polygon which has previously been set to the fixture using either physics_fixture_set_polygon_shape() or it can be used to add points to a chain of edge fixtures using the function physics_fixture_set_chain_shape(). For a polygon shape, the points are relative to the origin of the fixture, with the 0,0 position of the x/y axis being the centre, and the subsequent coordinates being calculated as usual in GameMaker with down/right being +x,+y and up/left being -x,-y. Here is an illustration to help you visualise this process:</Description>
			<Parameter Name="fixture" Type="Id.PhysicsIndex" Optional="false">the index of the fixture</Parameter>
			<Parameter Name="xpos" Type="Real" Optional="false">the x position of the point (relative to the fixture origin for polygon shapes)</Parameter>
			<Parameter Name="ypos" Type="Real" Optional="false">the y position of the point (relative to the fixture origin for polygon shapes)</Parameter>
		</Function>
		<Function Name="physics_fixture_bind" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>Once we have defined our fixture it has to be bound to an instance. This means that its properties are transferred to the selected instance, not the actual fixture itself, so that one fixture can be bound to multiple instances if all are to have the same properties. You can specify an object index for the target and all instances present in the room at the time will receive that fixtures properties (but not any new instances of the object created later), or you can use the special keywords other and all. You can even specify a parent object and all children instances with that parent will also receive the fixture. Once the fixture has been bound to all the instances that you need, it can be deleted if no longer necessary and the instances with that fixtures properties will not be affected and maintain those properties.</Description>
			<Parameter Name="fixture" Type="Id.PhysicsIndex" Optional="false">the fixture that is to be bound</Parameter>
			<Parameter Name="target" Type="Id.Instance,Asset.GMObject,Constant.All" Optional="false">the target instance that is to receive the fixture (can be an instance id, an object id, other, or all)</Parameter>
		</Function>
		<Function Name="physics_fixture_bind_ext" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>Once we have defined our fixture it has to be bound to an instance. This means that its properties are transferred to the selected instance, not the actual fixture itself, so that one fixture can be bound to multiple instances if all are to have the same properties. You can specify an object index for the target and all instances present in the room at the time will receive that fixtures properties (but not any new instances of the object created later), or you can use the special keywords other and all. You can even specify a parent object and all children instances with that parent will also receive the fixture. Once the fixture has been bound to all the instances that you need, it can be deleted if no longer necessary and the instances with that fixtures properties will not be affected and maintain those properties.</Description>
			<Parameter Name="fixture" Type="Id.PhysicsIndex" Optional="false">the fixture that is to be bound</Parameter>
			<Parameter Name="target" Type="Id.Instance,Asset.GMObject,Constant.All" Optional="false">the target instance that is to receive the fixture (can be an instance id, an object id, other, or all)</Parameter>
			<Parameter Name="xoffset" Type="Real" Optional="false">the offset along the x-axis</Parameter>
			<Parameter Name="yoffset" Type="Real" Optional="false">the offset along the y-axis</Parameter>
		</Function>
		<Function Name="physics_fixture_create" Deprecated="false" ReturnType="Id.PhysicsIndex" Pure="true">
			<Description>The first step in setting up a fixture is creating it with this function. The returning index should be stored in a variable to be used in all further functions that are used to define and use this fixture.</Description>
		</Function>
		<Function Name="physics_fixture_delete" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Since once a fixture has been bound to an instance that instance maintains the fixtures properties, we can remove the fixture from memory with this function, particularly if we no longer plan to use it again. Please note that failure to remove fixtures after they are no longer needed may cause a memory leak which will slow down and eventually crash your game, so you should take care to clean up properly after defining and binding fixtures.</Description>
			<Parameter Name="fixture" Type="Id.PhysicsIndex" Optional="false">the fixture that is to be deleted from memory</Parameter>
		</Function>
		<Function Name="physics_fixture_set_angular_damping" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>If you think about any rotating object in the &quot;real world&quot;, unless it has a motor or is in space, it slows down over time due to the influence of external forces (like friction with the air around it). We can use the function physics_fixture_set_angular_damping() in GameMaker to simulate this effect and reduce the velocity of rotation of instances in the physics world, as, without it, any rotating instance would continue to rotate infinitely. Damping parameters should be between 0 and infinity, with 0 meaning no damping, and infinity meaning full damping. Normally you will use a damping value between 0 and 1, but you can use any non-negative value if required.</Description>
			<Parameter Name="fixture" Type="Id.PhysicsIndex" Optional="false">the index of the fixture</Parameter>
			<Parameter Name="damping" Type="Real" Optional="false">the angular damping of the fixture, usually between 0 and 1</Parameter>
		</Function>
		<Function Name="physics_fixture_set_awake" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>When you start a room with physics, or bind fixtures to instances, the fixtures are always considered to be &quot;awake&quot;... that is to say, they are processing events and interacting with the surrounding instances. However this can sometimes lead to problems, especially if you have a number of instances with fixtures that are side by side when a room starts (think of a tower made of various instances with fixtures) as with them being &quot;awake&quot; they will move and possibly change position due to the sudden start of gravity and collisions affecting them. In these cases you can use this function to flag the fixture as been &quot;asleep&quot;, in which case it will not be processing anything when it is first created in the room.</Description>
			<Parameter Name="fixture" Type="Id.PhysicsIndex" Optional="false">the id of the bound fixture</Parameter>
			<Parameter Name="flag" Type="Bool" Optional="false">whether a fixture is awake (true) or not (false)</Parameter>
		</Function>
		<Function Name="physics_fixture_set_box_shape" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function defines a box shape for your fixture. It takes the half width and height as the physics world uses this value far more than whole width/height values to determine things like collisions.</Description>
			<Parameter Name="fixture" Type="Id.PhysicsIndex" Optional="false">the index of the fixture</Parameter>
			<Parameter Name="halfwidth" Type="Real" Optional="false">the half width of the box</Parameter>
			<Parameter Name="halfheight" Type="Real" Optional="false">the half height of the box</Parameter>
		</Function>
		<Function Name="physics_fixture_set_chain_shape" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function defines a &quot;chain&quot; fixture shape. A chain fixture is comprised of a number of points, which are then connected together using edge shapes to join them. The function itself takes the index (ID) of the fixture and can tell the fixture to loop or not. Setting this to true will connect the last point to the first point with an edge, while setting it to false will not. Note that this function on prepares the fixture to accept the points required to make the chain, and these should be added after calling this function using physics_fixture_add_point(), much as you would when building a polygon fixture.</Description>
			<Parameter Name="fixture" Type="Id.PhysicsIndex" Optional="false">The index of the fixture</Parameter>
			<Parameter Name="loop" Type="Bool" Optional="false">Whether to close the chain (true) or not (false).</Parameter>
		</Function>
		<Function Name="physics_fixture_set_circle_shape" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function defines a circle shape for your fixture with a radius defined by the argument &quot;rad&quot;.</Description>
			<Parameter Name="fixture" Type="Id.PhysicsIndex" Optional="false">the index of the fixture</Parameter>
			<Parameter Name="rad" Type="Real" Optional="false">radius of the circle</Parameter>
		</Function>
		<Function Name="physics_fixture_set_collision_group" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Once you have created your fixture you can define it as being part of a collision group. This means that you can tell instances with that fixture to always collide or never collide with other instance that have fixtures bound to them with the same collision group. The values that can be assigned are based on positive or negative numbers, with 0 being the default value (meaning that the instance with this fixture setting is ignored unless a collision event is created for it). Here is an image to help explain:</Description>
			<Parameter Name="fixture" Type="Id.PhysicsIndex" Optional="false">the fixture that is to be bound</Parameter>
			<Parameter Name="group" Type="Real" Optional="false">the group that this fixture is assigned to (either a positive value, 0, or a negative value)</Parameter>
		</Function>
		<Function Name="physics_fixture_set_density" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>The density of something is defined as its mass per unit volume, which basically means how much mass is crammed into the space it takes up in the world. So, a balloon would have a low density as it has little mass that occupies a large space, while a lead bar would have a high density as it has a great mass, yet occupies little space.</Description>
			<Parameter Name="fixture" Type="Id.PhysicsIndex" Optional="false">the index of the fixture</Parameter>
			<Parameter Name="density" Type="Real" Optional="false">the density of the fixture calculated as kg/m²</Parameter>
		</Function>
		<Function Name="physics_fixture_set_edge_shape" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function defines an &quot;edge&quot; fixture shape. An edge shape is simply a line that will generate a collision when other fixtures over lap it, and can be very useful for generating (for example) terrain, or for creating borders around a room. The position of the edge is defined using local space, ie: the x/y position of the instance is considered (0,0), so this should be taken into consideration when creating them (in the code example below, the instance would have been placed at (0,0) in the room to avoid complications).</Description>
			<Parameter Name="fixture" Type="Id.PhysicsIndex" Optional="false">the index of the fixture</Parameter>
			<Parameter Name="local_x1" Type="Real" Optional="false">start x position for the edge</Parameter>
			<Parameter Name="local_y1" Type="Real" Optional="false">start y position for the edge</Parameter>
			<Parameter Name="local_x2" Type="Real" Optional="false">end x position for the edge</Parameter>
			<Parameter Name="local_y2" Type="Real" Optional="false">end y position for the edge</Parameter>
		</Function>
		<Function Name="physics_fixture_set_friction" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Friction is the force that resists the relative motion of material elements sliding against each other, which in the GameMaker physics world, translates as the loss of momentum caused by the collision of two instances with fixtures bound to them. So, when two instances collide, their motion is affected by this value, with a high friction causing a larger loss of momentum than a lower value. Note that the friction is usually set to a value between 0 and 1, but you can use any non-negative value if required.</Description>
			<Parameter Name="fixture" Type="Id.PhysicsIndex" Optional="false">the index of the fixture</Parameter>
			<Parameter Name="friction" Type="Real" Optional="false">the friction of the fixture</Parameter>
		</Function>
		<Function Name="physics_fixture_set_kinematic" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>There will be certain instances in a physics based game which you want to move around but do not wish to be acted on by forces such as gravity, nor forces incurred by collisions with dynamic objects (think of moving platforms in a platform game, for example). For such objects simply setting the density of a fixture to 0 will mean that the physics will assume that the object is intended to be static. However, should you set the phy_speed_x, phy_speed_y or phy_angular_velocity variables for an instance that has had such a fixture bound to it, it will be converted into a kinematic object and begin movement. Change the instance from static to kinematic mid-simulation can be expensive in terms of processing (depending on the state of the instances in the physics world) and therefore it is recommended to set the fixture to be kinematic using this function prior to binding it to an instance, so that it will be unaffected by collisions and forces (such as gravity) but may move with constant linear and/or angular velocity.</Description>
			<Parameter Name="fixture" Type="Id.PhysicsIndex" Optional="false">the index of the fixture</Parameter>
		</Function>
		<Function Name="physics_fixture_set_linear_damping" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Damping is used to reduce the physics world velocity of instances, and differs from friction in that friction only occurs when two instances with fixtures are in contact. Damping is also much cheaper to simulate than friction, but please note that damping is not a replacement for friction; the two effects can, and should, be used together. Here is an image to illustrate damping:</Description>
			<Parameter Name="fixture" Type="Id.PhysicsIndex" Optional="false">the index of the fixture</Parameter>
			<Parameter Name="damping" Type="Real" Optional="false">the damping of the fixture, usually between 0 and 1</Parameter>
		</Function>
		<Function Name="physics_fixture_set_polygon_shape" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function sets a polygon shape for your fixture, but you will need to use physics_fixture_add_point() to actually define the shape of this polygon relative to the origin of the fixture. The polygon is closed when the fixture is bound to an instance. You should note too that this function must be called before defining any points, and you must also have at least three points defined for your polygon before binding it to an instance or you will get an error.</Description>
			<Parameter Name="fixture" Type="Id.PhysicsIndex" Optional="false">the index of the fixture</Parameter>
		</Function>
		<Function Name="physics_fixture_set_restitution" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>In physics, restitution is defined as &quot;the return of an object or system to its original state after elastic deformation&quot;, but as the fixtures in the GameMaker are really rigid bodies and cannot be deformed, restitution is really a way of saying how &quot;bouncy&quot; the fixture is. This setting will affect how much an object &quot;bounces&quot; when it collides with other objects and is co-dependent on other forces that act on the instance like gravity and friction, and is usually a value between 0 and 1 (higher values can be used but may give unpredictable results). Here is an illustration of how it works:</Description>
			<Parameter Name="fixture" Type="Id.PhysicsIndex" Optional="false">The index of the fixture</Parameter>
			<Parameter Name="restitution" Type="Real" Optional="false">The restitution of the fixture (usually between 0 and 1)</Parameter>
		</Function>
		<Function Name="physics_fixture_set_sensor" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Some times you will want your game to detect and recognise when two instances with fixtures collide, but not have any physical reaction to the collision. This can be done by converting the fixture into a sensor, which basically means that they will generate a collision event but with no physical response so that you can use these instances as &quot;triggers&quot; for other events to happen in the game room. Any fixture can be flagged as a sensor, and it makes no difference if the instance it is bound to is static or in movement.</Description>
			<Parameter Name="fixture" Type="Id.PhysicsIndex" Optional="false">the index of the fixture</Parameter>
			<Parameter Name="state" Type="Bool" Optional="false">whether a fixture is a sensor (true) or not (false)</Parameter>
		</Function>
		<Function Name="physics_get_density" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>When you bind a fixture to an instance using physics_fixture_bind() this returns an &quot;id&quot; for the bound fixture. You can use this id to get the density value of the bound fixture (not the &quot;base&quot; fixture) at any time using this function.</Description>
			<Parameter Name="fixture" Type="Id.PhysicsIndex" Optional="false">the id of the bound fixture</Parameter>
		</Function>
		<Function Name="physics_get_restitution" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>When you bind a fixture to an instance using physics_fixture_bind() this returns an &quot;id&quot; for the bound fixture. You can use this id to get the restitution (the &quot;bounciness&quot; property) value of the bound fixture, not the &quot;base&quot; fixture, at any time using this function.</Description>
			<Parameter Name="fixture" Type="Id.PhysicsIndex" Optional="false">the id of the bound fixture</Parameter>
		</Function>
		<Function Name="physics_remove_fixture" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function removes (or &quot;un-binds&quot;) a fixture from an instance or instances. It requires the unique &quot;id&quot; of the bound fixture (as returned by the function physics_fixture_bind() and it will remove all the currently defined physics properties for the instance, permitting you to redefine a new fixture and bind that to the instance. In this way you can change the instances physical properties without having to destroy and re-create it.</Description>
			<Parameter Name="id" Type="Id.Instance" Optional="false">The ID of the instance to remove the fixture from</Parameter>
			<Parameter Name="fixture" Type="Id.PhysicsIndex" Optional="false">The ID of the fixture that is to be removed from the instance</Parameter>
		</Function>
		<Function Name="physics_set_density" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>When you bind a fixture to an instance using physics_fixture_bind() this returns an &quot;id&quot; for the bound fixture. You can use this id to set the density value of the bound fixture, not the &quot;base&quot; fixture, at any time using this function.</Description>
			<Parameter Name="fixture" Type="Id.PhysicsIndex" Optional="false">the id of the bound fixture</Parameter>
			<Parameter Name="density" Type="Real" Optional="false">the new density value to apply</Parameter>
		</Function>
		<Function Name="physics_set_friction" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>When you bind a fixture to an instance using physics_fixture_bind() this returns an &quot;id&quot; for the bound fixture. You can use this id to set the friction value of the bound fixture, not the &quot;base&quot; fixture, at any time using this function. Note that the friction is usually set to a value between 0 and 1, but you can use any non-negative value if required.</Description>
			<Parameter Name="fixture" Type="Id.PhysicsIndex" Optional="false">the id of the bound fixture</Parameter>
			<Parameter Name="friction" Type="Real" Optional="false">the new friction value to apply</Parameter>
		</Function>
		<Function Name="physics_set_restitution" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>When you bind a fixture to an instance using physics_fixture_bind() this returns an &quot;id&quot; for the bound fixture. You can use this id to set the restitution value of the bound fixture, not the &quot;base&quot; fixture, at any time using this function. Restitution is usually set as a value between 0 and 1, but you can use higher values if required, although the results may be unpredictable.</Description>
			<Parameter Name="fixture" Type="Id.PhysicsIndex" Optional="false">the id of the bound fixture</Parameter>
			<Parameter Name="restitution" Type="Real" Optional="false">the new restitution value to apply</Parameter>
		</Function>
		<Function Name="physics_apply_angular_impulse" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will give an angular impulse to a physics enabled instance. This impulse will set the angular rotation by the amount given, ignoring the current torque, essentially setting the amount of &quot;spin&quot; that a fixture has. If you wish to apply an angular force to an instance using torque, then you should be using the function physics_apply_torque().</Description>
			<Parameter Name="impulse" Type="Real" Optional="false">The impulse (in Newton metres) to be applied</Parameter>
		</Function>
		<Function Name="physics_apply_force" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>When working with physics you need to apply not only gravity to objects, but forces as well. A force is any influence that causes an object to undergo a change in speed, a change in direction, or a change in shape, and is defined in the GameMaker physics world the same as we define gravity, by getting the vector from the two xforce/yforce components. It should be noted that forces are not applied to the center of mass of the object, but rather at a point in the room and they will change the direction and speed as well as the torque (spin) dependant on any other forces that are working on the object (like gravity). Here is an example image to help illustrate:</Description>
			<Parameter Name="xpos" Type="Real" Optional="false">The x coordinate in the room where the force will be applied</Parameter>
			<Parameter Name="ypos" Type="Real" Optional="false">The y coordinate in the room where the force will be applied</Parameter>
			<Parameter Name="xforce" Type="Real" Optional="false">the x component of the force vector</Parameter>
			<Parameter Name="yforce" Type="Real" Optional="false">the y component of the force vector</Parameter>
		</Function>
		<Function Name="physics_apply_impulse" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Not only can you apply force and gravity to an object with the physics in GameMaker but you can also apply an impulse. This is slightly different to a force in that when it is applied it will immediately affect the speed, and, potentially the torque (or &quot;spin&quot;) of the object, particularly if the point chosen to apply the impulse is not aligned with the center of mass (note: the center of mass is not necessarily the same as the origin!). Here is an illustration:</Description>
			<Parameter Name="xpos" Type="Real" Optional="false">The x coordinate in the room where the impulse will be applied</Parameter>
			<Parameter Name="ypos" Type="Real" Optional="false">The y coordinate in the room where the impulse will be applied</Parameter>
			<Parameter Name="ximpulse" Type="Real" Optional="false">the x component of the impulse vector</Parameter>
			<Parameter Name="yimpulse" Type="Real" Optional="false">the y component of the impulse vector</Parameter>
		</Function>
		<Function Name="physics_apply_local_force" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Another way to use force in the physics world is to apply it locally to an instance. What this means is that the strength and direction of the force are calculated based on the origin (or the position if it has no sprite) of the instance, without taking into consideration the direction or rotation it may have in the game room or physics world. It should be noted that with this function, forces are not applied to the center of mass of the object, but rather at a point relative to the instance and they will not be instantly applied as they are dependent on any other forces that are working on the object (like gravity). This illustration demonstrates how a local force works:</Description>
			<Parameter Name="xlocal" Type="Real" Optional="false">The x coordinate relative to the origin where the force will be applied</Parameter>
			<Parameter Name="ylocal" Type="Real" Optional="false">The y coordinate relative to the origin where the force will be applied</Parameter>
			<Parameter Name="xforce" Type="Real" Optional="false">the x component of the force vector</Parameter>
			<Parameter Name="yforce" Type="Real" Optional="false">the y component of the force vector</Parameter>
		</Function>
		<Function Name="physics_apply_local_impulse" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Not only can you apply force and gravity to an object with the physics in GameMaker but you can also apply an impulse. This is slightly different to a force in that when it is applied it will immediately affect the speed, and, potentially the torque (or &quot;spin&quot;) of the object, particularly if the point chosen to apply the impulse has a vector that is not aligned with the centre of mass (note: the center of mass is not necessarily the same as the origin!). This function applies an impulse locally to an instance. What this means is that the strength and direction of the impulse are calculated based on the origin (or the position if it has no sprite) of the instance, without taking into consideration the direction or rotation it may have in the game room or physics world. Here is an illustration:</Description>
			<Parameter Name="xpos" Type="Real" Optional="false">The x coordinate relative to the origin where the impulse will be applied</Parameter>
			<Parameter Name="ypos" Type="Real" Optional="false">The y coordinate relative to the origin where the impulse will be applied</Parameter>
			<Parameter Name="ximpulse" Type="Real" Optional="false">the x component of the impulse vector (relative to the xpos coordinate)</Parameter>
			<Parameter Name="yimpulse" Type="Real" Optional="false">the y component of the impulse vector (relative to the ypos coordinate)</Parameter>
		</Function>
		<Function Name="physics_apply_torque" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>When we talk about torque, we are generally talking about the tendency of a force or impulse to rotate an instance about its centre of mass, but in GameMaker you can also apply torque independently to an instance, causing it to rotate in a given direction. How much torque you apply to get the desired rotation all depends on the size and density of the fixture you assign to your instance, as both these properties go towards defining its mass, which defines its inertia, which affects torque! The general rule of thumb is that if an instance has a lot of inertia, you will need a lot of torque to get it to start rotating. It should also be noted that other factors like gravity and collisions can also affect the torque of an instance. Here is an image to help explain:</Description>
			<Parameter Name="torque" Type="Real" Optional="false">The torque (in Newton metres) to be applied</Parameter>
		</Function>
		<Function Name="physics_joint_delete" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Once two instances with physics representations have been bound by a joint, this can be deleted again at any time. Normally this will happen automatically when one of the two instances is destroyed, or when the room ends, but there are times when you may wish to do this manually. In those cases you would use this function.</Description>
			<Parameter Name="joint" Type="Id.PhysicsIndex" Optional="false">The index of the joint that you wish to delete</Parameter>
		</Function>
		<Function Name="physics_joint_distance_create" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>One of the simplest joint is a distance joint which says that the distance between two points on two instances must be constant. When you specify a distance joint the two instances should already be created and have a fixture assigned, then you define the two anchor points in room coordinates. The first anchor point is connected to instance 1, the second anchor point is connected to instance 2 and the distance between these points imply the length of the distance constrain. The image below shows how this works:</Description>
			<Parameter Name="inst1" Type="Id.Instance" Optional="false">The first instance to connect with the joint</Parameter>
			<Parameter Name="inst2" Type="Id.Instance" Optional="false">The second instance to connect with the joint</Parameter>
			<Parameter Name="w_anchor1_x" Type="Real" Optional="false">The first x coordinate for the joint, within the game world</Parameter>
			<Parameter Name="w_anchor1_y" Type="Real" Optional="false">The first y coordinate for the joint, within the game world</Parameter>
			<Parameter Name="w_anchor2_x" Type="Real" Optional="false">The second x coordinate for the joint, within the game world</Parameter>
			<Parameter Name="w_anchor2_y" Type="Real" Optional="false">the second y coordinate for the joint, within the game world</Parameter>
			<Parameter Name="col" Type="Bool" Optional="false">Whether the two instances can collide (true) or not (false)</Parameter>
		</Function>
		<Function Name="physics_joint_enable_motor" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>When you have a joint with a motor (prismatic or revolute), you may want to be able to switch the motor on or off depending on variables and conditions within the game. For this, you need to have stored the index of the joint previously in a variable and then you can switch the motor on or off by using this function and setting the &quot;motor&quot; argument to true or false.</Description>
			<Parameter Name="joint" Type="Id.PhysicsIndex" Optional="false">The joint that you wish to enable or disable the motor on</Parameter>
			<Parameter Name="motor" Type="Bool" Optional="false">Whether you wish to turn the motor on (true) or off (false)</Parameter>
		</Function>
		<Function Name="physics_joint_friction_create" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>The friction joint is a bit different to all other joints in the physics simulation in that the connection created will not constrain the instances position or movement, but rather its speed and rotation. This works by taking the maximum input values for force and torque and applying those to the second fixture to bring the speed and angular momentum down to the same values as that of the first instance. So, if you have a stationary instance and a moving instance then connect them with a friction joint, the moving instance will gradually slow down until it too is stationary. If both instances were moving then the second instance will have its movement speed modified to match that of the first instance.</Description>
			<Parameter Name="inst1" Type="Id.Instance" Optional="false">The first instance to connect with the joint</Parameter>
			<Parameter Name="inst2" Type="Id.Instance" Optional="false">The second instance to connect with the joint</Parameter>
			<Parameter Name="anchor_x" Type="Real" Optional="false">The x coordinate for the joint, within the game world</Parameter>
			<Parameter Name="anchor_y" Type="Real" Optional="false">The y coordinate for the joint, within the game world</Parameter>
			<Parameter Name="max_force" Type="Real" Optional="false">The maximum frictional force that will be applied</Parameter>
			<Parameter Name="max_torque" Type="Real" Optional="false">The maximum rotational force that will be applied</Parameter>
			<Parameter Name="col" Type="Bool" Optional="false">Whether the two instances can collide (true) or not (false)</Parameter>
		</Function>
		<Function Name="physics_joint_gear_create" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>If you want to create a sophisticated mechanical contraption you might want to use gears. In principle you can create gears in GameMaker by using compounding instances to model gear teeth, but this is not very efficient and might be tedious to author! Thankfully there is a simpler method, and that is to use a gear joint. To make one you need to have previously defined your fixtures and created the two basic joints that are going to comprise your gear - these must be made up of one revolute joint and either a prismatic joint or another revolute joint. The image below shows how a gear would typically be created in a game:</Description>
			<Parameter Name="inst1" Type="Id.Instance" Optional="false">The first instance to connect with the joint</Parameter>
			<Parameter Name="inst2" Type="Id.Instance" Optional="false">The second instance to connect with the joint</Parameter>
			<Parameter Name="joint_1" Type="Id.PhysicsIndex" Optional="false">A previously defined revolute joint</Parameter>
			<Parameter Name="joint_2" Type="Id.PhysicsIndex" Optional="false">A previously defined revolute or prismatic joint</Parameter>
			<Parameter Name="ratio" Type="Real" Optional="false">Set the velocity ratio between the two joints</Parameter>
		</Function>
		<Function Name="physics_joint_get_value" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>By using a series of predefined constants, you can ask GameMaker to tell you a number of things about the state of any given joint. This is very useful as it gives you the ability to delete joints or change an instances behaviour depending on whatever your needs are at the time. There are a number of constants that can be used in this function and they can be found here: Physics Joint Constants, but be aware that complex calculations are done when you call these, so they should be used with care and only when necessary and note that many are unique to a specific type of joint.</Description>
			<Parameter Name="joint" Type="Id.PhysicsIndex" Optional="false">The index of the joint that you wish to test</Parameter>
			<Parameter Name="value" Type="Constant.PhysicsJointProperty" Optional="false">The constant for the joint property that you wish to test</Parameter>
		</Function>
		<Function Name="physics_joint_prismatic_create" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Like a revolute joint, the prismatic joint only has one degree of freedom, but with this joint it is directional relative to an axis rather than rotational and actually prevents any form of rotation. Here is an image to help you visualise how this works:</Description>
			<Parameter Name="inst1" Type="Id.Instance" Optional="false">The first instance to connect with the joint</Parameter>
			<Parameter Name="inst2" Type="Id.Instance" Optional="false">The second instance to connect with the joint</Parameter>
			<Parameter Name="w_anchor_x" Type="Real" Optional="false">The x coordinate where the joint is anchored, within the game world</Parameter>
			<Parameter Name="w_anchor_y" Type="Real" Optional="false">The y coordinate where the joint is anchored, within the game world</Parameter>
			<Parameter Name="w_axis_x" Type="Real" Optional="false">The x component of the axis vector</Parameter>
			<Parameter Name="w_axis_y" Type="Real" Optional="false">The y component of the axis vector</Parameter>
			<Parameter Name="lower_trans_limit" Type="Real" Optional="false">The lower permitted limit for the joint movement</Parameter>
			<Parameter Name="upper_trans_limit" Type="Real" Optional="false">The lower permitted limit for the joint movement</Parameter>
			<Parameter Name="limit" Type="Bool" Optional="false">Whether to limit the movement of the joint (true) or not (false)</Parameter>
			<Parameter Name="max_motor_force" Type="Real" Optional="false">Sets the maximum movement speed for the motor</Parameter>
			<Parameter Name="motor_speed" Type="Real" Optional="false">This is the speed at which the motor should move</Parameter>
			<Parameter Name="motor" Type="Bool" Optional="false">Whether the motor should be active (true) or not (false)</Parameter>
			<Parameter Name="col" Type="Bool" Optional="false">Whether the two instances can collide (true) or not (false)</Parameter>
		</Function>
		<Function Name="physics_joint_pulley_create" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>The pulley joint is used to connect two instances within the physics world in such a way that moving one will directly influence the movement of the other. These joints are first anchored in the world space at two points, each one connected to an instance at its center of mass. This can be changed by setting the local anchor x/y coordinates relative to the origin of the instance, meaning that the actual connection from the instance to the physics world anchor point can be offset somewhere other than its origin. The following image illustrates this:</Description>
			<Parameter Name="inst1" Type="Id.Instance" Optional="false">The first instance to connect with the joint</Parameter>
			<Parameter Name="inst2" Type="Id.Instance" Optional="false">The second instance to connect with the joint</Parameter>
			<Parameter Name="w_anchor1_x" Type="Real" Optional="false">The x coordinate where the first part of joint is anchored, within the game world</Parameter>
			<Parameter Name="w_anchor1_y" Type="Real" Optional="false">The y coordinate where the first part of the joint is anchored, within the game world</Parameter>
			<Parameter Name="w_anchor2_x" Type="Real" Optional="false">The x coordinate where the second part of the joint is anchored, within the game world</Parameter>
			<Parameter Name="w_anchor2_y" Type="Real" Optional="false">The y coordinate where the second part of the joint is anchored, within the game world</Parameter>
			<Parameter Name="l_anchor1_x" Type="Id.Instance" Optional="false">The local x coordinate where joint 1 is anchored to the first instance</Parameter>
			<Parameter Name="l_anchor1_y" Type="Id.Instance" Optional="false">The local y coordinate where joint 1 is anchored to the first instance</Parameter>
			<Parameter Name="l_anchor2_x" Type="Id.Instance" Optional="false">The local x coordinate where joint 2 is anchored to the second instance</Parameter>
			<Parameter Name="l_anchor2_y" Type="Id.Instance" Optional="false">The local y coordinate where joint 2 is anchored to the second instance</Parameter>
			<Parameter Name="ratio" Type="Id.Instance" Optional="false">Set the velocity ratio between two instances</Parameter>
			<Parameter Name="col" Type="Bool" Optional="false">Whether the two instances can collide (true) or not (false)</Parameter>
		</Function>
		<Function Name="physics_joint_revolute_create" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>A revolute joint forces two bodies to share a common anchor point (often called a hinge point) and the joint has a single degree of freedom - the relative rotation of the two bodies around this point. To specify a revolute you need to provide two instances and a single anchor point in the room, as you can see in the image provided:</Description>
			<Parameter Name="inst1" Type="Id.Instance" Optional="false">The first instance to connect with the joint</Parameter>
			<Parameter Name="inst2" Type="Id.Instance" Optional="false">The second instance to connect with the joint</Parameter>
			<Parameter Name="w_anchor_x" Type="Real" Optional="false">The x coordinate for the joint, within the game world</Parameter>
			<Parameter Name="w_anchor_y" Type="Real" Optional="false">The y coordinate for the joint, within the game world</Parameter>
			<Parameter Name="ang_min_limit" Type="Real" Optional="false">The lower permitted limit for the joint angle</Parameter>
			<Parameter Name="ang_max_limit" Type="Real" Optional="false">The upper permitted limit for the joint angle</Parameter>
			<Parameter Name="ang_limit" Type="Bool" Optional="false">Whether the to limit the angle of the joint (true) or not (false)</Parameter>
			<Parameter Name="max_motor_torque" Type="Real" Optional="false">Sets the maximum motor torque used to achieve the desired motor speed (in Newtons per meter)</Parameter>
			<Parameter Name="motor_speed" Type="Real" Optional="false">This is the speed at which the motor should rotate</Parameter>
			<Parameter Name="motor" Type="Bool" Optional="false">Whether the motor should be active (true) or not (false)</Parameter>
			<Parameter Name="col" Type="Bool" Optional="false">Whether the two instances can collide (true) or not (false)</Parameter>
		</Function>
		<Function Name="physics_joint_rope_create" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>A rope joint is one which is used to join two instances that you want to keep a constant distance apart, no matter what other forces are acting on it. With a distance joint, you can get &quot;joint stretching&quot; where the two fixtures will separate and behave strangely should too much stress be put on the joint, however the rope joint does not do this and will not stretch any further than the maximum defined length. When you create a rope joint the two instances should already be created and have a fixture assigned, then you define the two anchor points in room coordinates. The first anchor point is connected to instance 1, the second anchor point is connected to instance 2 and the distance and the maxlength argument sets the maximum length constraint on the joint. The image below shows how this works:</Description>
			<Parameter Name="inst1" Type="Id.Instance" Optional="false">The first instance to connect with the joint</Parameter>
			<Parameter Name="inst2" Type="Id.Instance" Optional="false">The second instance to connect with the joint</Parameter>
			<Parameter Name="w_anchor1_x" Type="Real" Optional="false">The first x coordinate for the joint, within the game world</Parameter>
			<Parameter Name="w_anchor1_y" Type="Real" Optional="false">The first y coordinate for the joint, within the game world</Parameter>
			<Parameter Name="w_anchor2_x" Type="Real" Optional="false">The second x coordinate for the joint, within the game world</Parameter>
			<Parameter Name="w_anchor2_y" Type="Real" Optional="false">the second y coordinate for the joint, within the game world</Parameter>
			<Parameter Name="maxlength" Type="Real" Optional="false">The maximum length that the joint can &quot;stretch&quot;</Parameter>
			<Parameter Name="col" Type="Bool" Optional="false">Whether the two instances can collide (true) or not (false)</Parameter>
		</Function>
		<Function Name="physics_joint_set_value" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Certain joint properties can be changed and set even after the creation of the joint. There are a number of constants that can be used in this function and they can be found here: Physics Joint Constants.</Description>
			<Parameter Name="joint" Type="Id.PhysicsIndex" Optional="false">The index of the joint that you wish to change</Parameter>
			<Parameter Name="field" Type="Constant.PhysicsJointProperty" Optional="false">The constant for the joint property that you wish to change</Parameter>
			<Parameter Name="value" Type="Any" Optional="false">The new value for the joint property</Parameter>
		</Function>
		<Function Name="physics_joint_weld_create" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>The weld joint is designed to attach two fixtures together in a strong, yet flexible bond. The weld joint will permit flexing between the two joined fixtures but without the stretching associated with, for example, a distance joint, and will always try to &quot;spring&quot; back to the reference angle when put under any stress or load. You define the point in the room where the joint should be created, as well as the angle that you wish the joint to try and maintain at all times, as shown in the image below:</Description>
			<Parameter Name="inst1" Type="Id.Instance" Optional="false">The first instance to connect with the joint</Parameter>
			<Parameter Name="inst2" Type="Id.Instance" Optional="false">The second instance to connect with the joint</Parameter>
			<Parameter Name="anchor_x" Type="Real" Optional="false">The x coordinate for the joint, within the game world</Parameter>
			<Parameter Name="anchor_y" Type="Real" Optional="false">The y coordinate for the joint, within the game world</Parameter>
			<Parameter Name="ref_angle" Type="Real" Optional="false">The joint angle to maintain</Parameter>
			<Parameter Name="freq_hz" Type="Real" Optional="false">This is the oscillation frequency for the joint, in hertz</Parameter>
			<Parameter Name="damping_ratio" Type="Real" Optional="false">This damping ratio for the joint</Parameter>
			<Parameter Name="col" Type="Bool" Optional="false">Whether the two instances can collide (true) or not (false)</Parameter>
		</Function>
		<Function Name="physics_joint_wheel_create" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>A wheel joint simply combines a piston and a revolute joint, like a wheel mounted on the shock absorber of a car. You specify the anchor point for the joint well as the two physics enabled instances to joint, and the first instance will act as the &quot;body&quot; for the joint, while the second will be the &quot;wheel&quot;, and be permitted to move freely around the joint axis. You can also set an axis vector, which is the imaginary line along which the joint will act as a &quot;spring&quot; permitting the wheel to bounce up and down along it as it encounters obstacles (much like the piston joint). The following image illustrates this:</Description>
			<Parameter Name="inst1" Type="Id.Instance" Optional="false">The first instance to connect with the joint</Parameter>
			<Parameter Name="inst2" Type="Id.Instance" Optional="false">The second instance to connect with the joint</Parameter>
			<Parameter Name="anchor_x" Type="Real" Optional="false">The x coordinate where the joint is anchored, within the game world</Parameter>
			<Parameter Name="anchor_y" Type="Real" Optional="false">The y coordinate where the joint is anchored, within the game world</Parameter>
			<Parameter Name="axis_x" Type="Real" Optional="false">The x component of the wheel axis vector</Parameter>
			<Parameter Name="axis_y" Type="Real" Optional="false">The y component of the wheel axis vector</Parameter>
			<Parameter Name="enablemotor" Type="Bool" Optional="false">Whether the motor should be active (true) or not (false)</Parameter>
			<Parameter Name="max_motor_torque" Type="Real" Optional="false">Sets the maximum motor torque used to achieve the desired motor speed (in Newtons per meter)</Parameter>
			<Parameter Name="motor_speed" Type="Real" Optional="false">This is the speed at which the motor should rotate</Parameter>
			<Parameter Name="freq_hz" Type="Real" Optional="false">This is the oscillation frequency for the joint, in hertz</Parameter>
			<Parameter Name="damping_ratio" Type="Real" Optional="false">This damping ratio for the joint</Parameter>
			<Parameter Name="col" Type="Bool" Optional="false">Whether the two instances can collide (true) or not (false)</Parameter>
		</Function>
		<Function Name="physics_particle_count" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the number of particles that are active in a physics enabled room.</Description>
		</Function>
		<Function Name="physics_particle_create" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can create a single particle anywhere within your game room, setting certain flags and properties. The &quot;flags&quot; are the return value of a combination of the following constants:</Description>
			<Parameter Name="flags" Type="Constant.PhysicsParticleFlag" Optional="false">The flags to set on the particle.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position to create the particle at.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position to create the particle at.</Parameter>
			<Parameter Name="xv" Type="Real" Optional="false">The initial horizontal velocity.</Parameter>
			<Parameter Name="yv" Type="Real" Optional="false">The initial vertical velocity.</Parameter>
			<Parameter Name="col" Type="Constant.Color" Optional="false">The base colour to use for the particle.</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The base alpha to use for the particle.</Parameter>
			<Parameter Name="category" Type="Real" Optional="false">The user defined category to which the particle belongs.</Parameter>
		</Function>
		<Function Name="physics_particle_delete" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can delete (remove) a particle from the physics simulation in the current room. The function takes the unique ID of the particle to delete, as returned by the function physics_particle_create().</Description>
			<Parameter Name="ind" Type="Real" Optional="false">The index (ID) of the particle to delete.</Parameter>
		</Function>
		<Function Name="physics_particle_delete_region_box" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can delete (remove) all the particles that fall within the bounds of the defined rectangular area from the physics simulation in the current room. The function takes the x and y position for the center of the area to delete as well as the half width and height of the rectangle (in pixels) which defines the area.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x position of the center of the area to delete.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position of the center of the area to delete.</Parameter>
			<Parameter Name="halfwidth" Type="Real" Optional="false">The half width of the rectangle.</Parameter>
			<Parameter Name="halfheight" Type="Real" Optional="false">The half height of the rectangle.</Parameter>
		</Function>
		<Function Name="physics_particle_delete_region_circle" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can delete (remove) all the particles that fall within the bounds of the defined circular area from the physics simulation in the current room. The function takes the x and y position for the center of the area to delete as well as the radius (in pixels) which defines the circular area.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x position of the center of the area to delete.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position of the center of the area to delete.</Parameter>
			<Parameter Name="radius" Type="Real" Optional="false">The radius (in pixels) of the circular area to delete.</Parameter>
		</Function>
		<Function Name="physics_particle_delete_region_poly" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can delete (remove) all the particles that fall within the bounds of the defined polygonal area from the physics simulation in the current room. The function takes a (previously created) ds_list() containing the x/y position of each point of the polygon, with the even numbered positions in the list being the x coordinates, and odd numbered positions the y coordinates, ie: for a triangle, your list would have six entries, with entry 0, 2, and 4 being the x coordinates and 1, 3, and 5 being the y coordinates. The polygon will then be used to delete all the particles that fall within the defined area.</Description>
			<Parameter Name="pointlist" Type="Id.DsList" Optional="false">A ds_list of points to use to create the polygon.</Parameter>
		</Function>
		<Function Name="physics_particle_draw" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will draw a sprite at the position of all the particles that share the same user defined category value, and that have flags which coincide with those set for the mask. The mask value is defined in the same way as you would define the flags when creating the particle (see the function physics_particle_create() for an example), ie: using the bitwise or &quot;|&quot; to mask off the appropriate bits for each flag.</Description>
			<Parameter Name="typemask" Type="Real" Optional="false">The mask to compare the particles flags with.</Parameter>
			<Parameter Name="category" Type="Real" Optional="false">The user defined category to draw (use 0 to draw all categories).</Parameter>
			<Parameter Name="sprite" Type="Asset.GMSprite" Optional="false">The sprite to use for each particle.</Parameter>
			<Parameter Name="subimg" Type="Real" Optional="false">The image_index of the sprite to draw.</Parameter>
		</Function>
		<Function Name="physics_particle_draw_ext" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will draw a sprite at the position of all the particles that share the same user defined category value, and that have flags which coincide with those set for the mask. The mask value is defined in the same way as you would define the flags when creating the particles (see the functions physics_particle_create() for an example), ie: using the bitwise or &quot;|&quot; to mask off the appropriate bits for each flag.</Description>
			<Parameter Name="typemask" Type="Real" Optional="false">The mask to compare the particles flags with.</Parameter>
			<Parameter Name="category" Type="Real" Optional="false">The user defined category to draw (use 0 to draw all categories).</Parameter>
			<Parameter Name="sprite" Type="Asset.GMSprite" Optional="false">The sprite to use for each particle.</Parameter>
			<Parameter Name="subimg" Type="Real" Optional="false">The image_index of the sprite to draw.</Parameter>
			<Parameter Name="xscale" Type="Real" Optional="false">The scale factor to apply to the sprite along the x axis.</Parameter>
			<Parameter Name="yscale" Type="Real" Optional="false">The scale factor to apply to the sprite along the y axis.</Parameter>
			<Parameter Name="ang" Type="Real" Optional="false">The angle (in degrees) to draw the sprite at.</Parameter>
			<Parameter Name="col" Type="Constant.Color" Optional="false">The colour to blend with the sprite (default is c_white).</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha value to use when drawing (0 - 1).</Parameter>
		</Function>
		<Function Name="physics_particle_get_damping" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can find out what the current linear damping is for particles in the physics simulation (you can set this value using physics_particle_set_damping()).</Description>
		</Function>
		<Function Name="physics_particle_get_data" Deprecated="false" ReturnType="Id.Buffer" Pure="true">
			<Description>This function returns various pieces of information about each particle in the physics simulation using the given flags checked. The buffer used must have been created previously using the function buffer_create(), and should be of the &quot;grow&quot; type, with the size being approximately that of the expected return data. The flags are set using any of the constants given below, and you would use the bitwise or &quot;|&quot; to create a single flag value to get the desired information.</Description>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The (previously created) buffer to use to store the data.</Parameter>
			<Parameter Name="flags" Type="Real" Optional="false">The flags to use to extract data about specific particle types.</Parameter>
		</Function>
		<Function Name="physics_particle_get_data_particle" Deprecated="false" ReturnType="Id.Buffer" Pure="true">
			<Description>This function returns various pieces of information about a single particle in the physics simulation using the given flags checked. The particle index (its ID) is that which was returned by the function physics_particle_create(), and the buffer used must have been created previously using the function buffer_create(). It should be of the &quot;grow&quot; type, with the size being approximately that of the expected return data. The flags themselves are set using the constants given below, and you would use the bitwise or &quot;|&quot; to create a single flag value to get the desired information.</Description>
			<Parameter Name="ind" Type="Real" Optional="false">The index (ID) of the particle to get the data from.</Parameter>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The (previously created) buffer to use to store the data.</Parameter>
			<Parameter Name="flags" Type="Real" Optional="false">The flags to use to extract data about specific particle types.</Parameter>
		</Function>
		<Function Name="physics_particle_get_density" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can find out what the current density is for particles in the physics simulation (you can set this value using physics_particle_set_density()).</Description>
		</Function>
		<Function Name="physics_particle_get_gravity_scale" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can find out what the current gravity scale factor is for particles in the physics simulation (you can set this value using physics_particle_set_gravity_scale()).</Description>
		</Function>
		<Function Name="physics_particle_get_group_flags" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can retrieve the group flags for a group of particles. The group value is that which was returned when you created the group of particles using the function physics_particle_group_end(), and the function will return a value which is the combined value of the currently set flags.</Description>
			<Parameter Name="group" Type="Real" Optional="false">The particle group to get.</Parameter>
		</Function>
		<Function Name="physics_particle_get_max_count" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can find out what the current cap value is on particles permitted in the physics simulation (you can set this value using physics_particle_set_max_count()).</Description>
		</Function>
		<Function Name="physics_particle_get_radius" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can find out what the current radius (in pixels) is for particles in the physics simulation (you can set this value using physics_particle_set_radius()).</Description>
		</Function>
		<Function Name="physics_particle_group_add_point" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function sets a point in the room to define the shape of a polygon which will be used to create a group of soft body particles. You must have previously signaled to GameMaker that you are going define a polygon shape using the function physics_particle_group_polygon() and then use this function to define the individual points of the polygon. You must give at least three points when defining the polygon shape, but can give up to eight, and the function will permit the definition of concave polygons. However, if you generate a polygon with any cavities, the points within will be ignored and a convex shape will be created for the particle group.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x position in the room for the point.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position in the room for the point.</Parameter>
		</Function>
		<Function Name="physics_particle_group_begin" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>below).</Description>
			<Parameter Name="flags" Type="Constant.PhysicsParticleFlag" Optional="false">The flags to set on the particle.</Parameter>
			<Parameter Name="groupflags" Type="Constant.PhysicsParticleGroupFlag" Optional="false">The group flags to set on the particle (see Description below).</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x position to create the particle group at.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position to create the particle group at.</Parameter>
			<Parameter Name="ang" Type="Real" Optional="false">The angle (in degrees) to rotate the group to on create.</Parameter>
			<Parameter Name="xv" Type="Real" Optional="false">The initial horizontal velocity.</Parameter>
			<Parameter Name="yv" Type="Real" Optional="false">The initial vertical velocity.</Parameter>
			<Parameter Name="ang_velocity" Type="Real" Optional="false">The initial angular velocity.</Parameter>
			<Parameter Name="col" Type="Bool" Optional="false">The base colour to use for the particle group.</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The base alpha to use for the particle group.</Parameter>
			<Parameter Name="strength" Type="Real" Optional="false">Set the cohesion strength between particles in the group.</Parameter>
			<Parameter Name="category" Type="Real" Optional="false">The user defined category to which the group belongs.</Parameter>
		</Function>
		<Function Name="physics_particle_group_box" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will set the shape of the particle group that is being created. You must first have begun the group definition using the function physics_particle_group_begin(), and then you would use this function to set the approximate half width and half height of the group in pixels - approximate because the exact width and height will depend on the size of the base particles, as defined by the physics_particle_set_radius() function, as the physics simulation tries to &quot;fit&quot; as many of the particles as possible into the defined shape. Finally you need to call physics_particle_group_end() to create the group of particles in the room.</Description>
			<Parameter Name="halfwidth" Type="Real" Optional="false">The half width of the box.</Parameter>
			<Parameter Name="halfheight" Type="Real" Optional="false">The half height of the box.</Parameter>
		</Function>
		<Function Name="physics_particle_group_circle" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will set the shape of the particle group that is being created. You must first have begun the group definition using the function physics_particle_group_begin(), and then you would use this function to set the approximate radius of the group in pixels - approximate because the exact radius will depend on the size of the base particles, as defined by the physics_particle_set_radius() function, as the physics simulation tries to &quot;fit&quot; as many of the particles as possible into the defined shape. Finally you need to call physics_particle_group_end() to create the group of particles in the room.</Description>
			<Parameter Name="radius" Type="Real" Optional="false">The radius (in pixels) of the circle to create.</Parameter>
		</Function>
		<Function Name="physics_particle_group_count" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the number of particles that are active in a single group. The group index (ID) is the value that is returned when you call the function physics_particle_group_end().</Description>
			<Parameter Name="group" Type="Real" Optional="false">The group index (ID) of the particle group to count.</Parameter>
		</Function>
		<Function Name="physics_particle_group_delete" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can delete (remove) a particle group from the physics simulation in the current room. The function takes the unique group ID of the group to delete, as returned by the function physics_particle_group_end().</Description>
			<Parameter Name="ind" Type="Real" Optional="false">The index (ID) of the particle group to delete.</Parameter>
		</Function>
		<Function Name="physics_particle_group_end" Deprecated="false" ReturnType="Id.PhysicsParticleGroup" Pure="false">
			<Description>This function is used to end the definition of a particle group shape. Calling this function will create the particles within the given shape parameters, and also return an ID value which can be stored and used in further functions for interactions with the particle group.</Description>
		</Function>
		<Function Name="physics_particle_group_get_angle" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can retrieve the rotation (angle) in the room of a group of particles. The group value is that which was returned when you created the group of particles using the function physics_particle_group_end(), and the function will return a value which is the combined value of the currently set flags.</Description>
			<Parameter Name="group" Type="Id.PhysicsParticleGroup" Optional="false">The particle group to get.</Parameter>
		</Function>
		<Function Name="physics_particle_group_get_ang_vel" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can retrieve the angular velocity of a group of particles. The group value is that which was returned when you created the group of particles using the function physics_particle_group_end(), and the function will return a value which is the combined value of the currently set flags.</Description>
			<Parameter Name="group" Type="Id.PhysicsParticleGroup" Optional="false">The particle group to get.</Parameter>
		</Function>
		<Function Name="physics_particle_group_get_centre_x" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can retrieve the x component of the center of mass of an entire group of particles. The group value is that which was returned when you created the group of particles using the function physics_particle_group_end(), and the function will return a value which is the combined value of the currently set flags.</Description>
			<Parameter Name="group" Type="Id.PhysicsParticleGroup" Optional="false">The particle group to get.</Parameter>
		</Function>
		<Function Name="physics_particle_group_get_centre_y" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can retrieve the y component of the center of mass of an entire group of particles. The group value is that which was returned when you created the group of particles using the function physics_particle_group_end(), and the function will return a value which is the combined value of the currently set flags.</Description>
			<Parameter Name="group" Type="Id.PhysicsParticleGroup" Optional="false">The particle group to get.</Parameter>
		</Function>
		<Function Name="physics_particle_group_get_data" Deprecated="false" ReturnType="Id.Buffer" Pure="true">
			<Description>This function returns various pieces of information about a group of particles in the physics simulation using the given flags checked. The group index (its ID) is that which was returned by the function physics_particle_group_end(), and the buffer used must have been created previously using the function buffer_create(). It should be of the &quot;grow&quot; type, with the size being approximately that of the expected return data. The flags themselves are set using the constants given below, and you would use the bitwise or &quot;|&quot; to create a single flag value to get the desired information.</Description>
			<Parameter Name="group" Type="Id.PhysicsParticleGroup" Optional="false">The group index (ID) of the particle group to get the data from.</Parameter>
			<Parameter Name="buffer" Type="Id.Buffer" Optional="false">The (previously created) buffer to use to store the data.</Parameter>
			<Parameter Name="flags" Type="Real" Optional="false">The flags to use to extract data about specific particle types.</Parameter>
		</Function>
		<Function Name="physics_particle_group_get_inertia" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can retrieve the inertia of an entire group of particles. The group value is that which was returned when you created the group of particles using the function physics_particle_group_end(), and the function will return a value which is the combined value of the currently set flags.</Description>
			<Parameter Name="group" Type="Id.PhysicsParticleGroup" Optional="false">The particle group to get.</Parameter>
		</Function>
		<Function Name="physics_particle_group_get_vel_x" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can retrieve the horizontal velocity of a group of particles. The group value is that which was returned when you created the group of particles using the function physics_particle_group_end(), and the function will return a value which is the combined value of the currently set flags.</Description>
			<Parameter Name="group" Type="Id.PhysicsParticleGroup" Optional="false">The particle group to get.</Parameter>
		</Function>
		<Function Name="physics_particle_group_get_vel_y" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can retrieve the vertical velocity of a group of particles. The group value is that which was returned when you created the group of particles using the function physics_particle_group_end(), and the function will return a value which is the combined value of the currently set flags.</Description>
			<Parameter Name="group" Type="Id.PhysicsParticleGroup" Optional="false">The particle group to get.</Parameter>
		</Function>
		<Function Name="physics_particle_group_get_x" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can retrieve the x position in the room of a group of particles. The group value is that which was returned when you created the group of particles using the function physics_particle_group_end(), and the function will return a value which is the combined value of the currently set flags.</Description>
			<Parameter Name="group" Type="Id.PhysicsParticleGroup" Optional="false">The particle group to get.</Parameter>
		</Function>
		<Function Name="physics_particle_group_get_y" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can retrieve the y position in the room of a group of particles. The group value is that which was returned when you created the group of particles using the function physics_particle_group_end(), and the function will return a value which is the combined value of the currently set flags.</Description>
			<Parameter Name="group" Type="Id.PhysicsParticleGroup" Optional="false">The particle group to get.</Parameter>
		</Function>
		<Function Name="physics_particle_group_join" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can join two particle groups together, and the joined groups will then behave as if they were both part of a single entity. The groups should have been created with over-lapping edges, as, if they are not already touching, they will not be joined. The function takes the unique group IDs of the groups to join, as returned by the function physics_particle_group_end(), and you can use the function any number of times for a single group to join various soft bodies together.</Description>
			<Parameter Name="to" Type="Id.PhysicsParticleGroup" Optional="false">The first particle group to join.</Parameter>
			<Parameter Name="from" Type="Id.PhysicsParticleGroup" Optional="false">The second particle group to join.</Parameter>
		</Function>
		<Function Name="physics_particle_group_polygon" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will set the shape of the particle group that is being created. You must first have begun the group definition using the function physics_particle_group_begin(), and then you would use this function to tell GameMaker that you are going to add in the approximate points that will be used to define the polygon shape - approximate because the exact shape will depend on the size of the base particles, as defined by the physics_particle_set_radius() function, as the physics simulation tries to &quot;fit&quot; as many of the particles as possible into the defined shape.</Description>
		</Function>
		<Function Name="physics_particle_set_category_flags" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can change the particle flags for a category of particles. The category value is that which you defined in the function physics_particle_create() or (if you created a group) physics_particle_group_begin(), while the flags are the return value of a combination of the following constants:</Description>
			<Parameter Name="category" Type="Real" Optional="false">The particle category to set.</Parameter>
			<Parameter Name="flags" Type="Real" Optional="false">The flags to set on the particle.</Parameter>
		</Function>
		<Function Name="physics_particle_set_damping" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the linear damping of particles in the simulation. Damping is used to reduce the physics simulation velocity of instances over time, much like air resistance in the real world. This function is global in scope, in that it will change the damping not just for new particles created after the change, but also for those already present in the simulation.</Description>
			<Parameter Name="damping" Type="Real" Optional="false">The linear damping to be applied to the particle fixture.</Parameter>
		</Function>
		<Function Name="physics_particle_set_density" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the density of the particles in a physics simulation. Setting the density of the particle will have a direct impact on how much inertia it has as well as how it reacts to collisions, so if you make a small particle with a high density it will have a very large mass, but if you define a large particle with a low density it will have a much smaller mass. This function is global in scope, in that it will change the density not just for new particles created after the change, but also for those already present in the simulation.</Description>
			<Parameter Name="density" Type="Real" Optional="false">The density of the particle fixture.</Parameter>
		</Function>
		<Function Name="physics_particle_set_flags" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can change the particle flags for an individual particle. The index value is the particle ID as returned by the function physics_particle_create(), while the flags are the return value of a combination of the following constants:</Description>
			<Parameter Name="index" Type="Real" Optional="false">The index of the particle.</Parameter>
			<Parameter Name="flags" Type="Real" Optional="false">The flags to set on the particle.</Parameter>
		</Function>
		<Function Name="physics_particle_set_gravity_scale" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the gravity scale factor for particles in the physics simulation. The function is designed to help prevent instability in the physics simulation, especially when using very small particles which may behave unpredictably (i.e. break conservation of momentum) in scenarios such as explosions. Slowing these particles down by reducing gravity scale can stabilize their behaviour. This function is global in scope, in that it will change the gravity scale not just for new particles created after the change, but also for those already present in the simulation.</Description>
			<Parameter Name="scale" Type="Real" Optional="false">The scaling factor to be applied to gravity for all particles.</Parameter>
		</Function>
		<Function Name="physics_particle_set_group_flags" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can change the group flags for a group of particles. The group value is that which was returned when you created the group of particles using the function physics_particle_group_end(), while the flags are the return value of a combination of the following constants:</Description>
			<Parameter Name="group" Type="Real" Optional="false">The particle group to set.</Parameter>
			<Parameter Name="flags" Type="Real" Optional="false">The flags to set on the particle.</Parameter>
		</Function>
		<Function Name="physics_particle_set_max_count" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will set the total permitted number of particles in a physics simulation. If you set this value to 0, then there is no cap the particles created, and setting it to any other value will stop any further particles being created when the total number of particles is equal to the value. Note that the minimum number of particles you can create in a simulation is 128, so setting this value any lower will have no effect (unless set to 0).</Description>
			<Parameter Name="count" Type="Real" Optional="false">The maximum number of particles to permit.</Parameter>
		</Function>
		<Function Name="physics_particle_set_radius" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the radius (in pixels) for the particles in a physics simulation. This function is global in scope, in that it will change the radius not just for new particles created after the change, but also for those already present in the simulation.</Description>
			<Parameter Name="radius" Type="Real" Optional="false">The radius (in pixels) of the particle fixture.</Parameter>
		</Function>
		<Function Name="physics_draw_debug" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>When creating a physics system in GameMaker, it is often important to have a visual representation of what is actually happening with an instance. This can be achieved by using physics_draw_debug(), which draws a schematic outline of the physical properties associated with the instance running the code. Here is an image of how it looks:</Description>
		</Function>
		<Function Name="physics_pause_enable" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Normally for a physics simulation to work, it must be continuous and cannot be stopped and started, or have instances suddenly moved from one place to another in the room. However, there are moments when you need to pause the simulation as (for example) the device os has paused, and so you would use this function. It pauses the simulation if the flag is set to true and no further physics calculations will be done until the flag is set to false again.</Description>
			<Parameter Name="flag" Type="Bool" Optional="false">This can be set to true to pause the simulation, or false to start it again.</Parameter>
		</Function>
		<Function Name="physics_world_create" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>Even if you have defined the physics for your objects, without a world to place them in they will default to the traditional GameMaker collision system, so you need this function to create the physics system for the specified room either in an object event, or the creation code of the room itself (it can also be defined without using code in the room editor). This function will associate a physics &quot;world&quot; with the room and all instances created in the room will behave using the physics that has been defined for them and the world itself.</Description>
			<Parameter Name="pixeltometrescale" Type="Real" Optional="false">defines the ratio of pixels on screen to metres in the real world. A ratio of 32:1 will be specified as 1/32 (or 0.03125).</Parameter>
		</Function>
		<Function Name="physics_world_draw_debug" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function will draw a representation of the physics world system of the room to help with debugging when you are having trouble getting the physics scene to work right. Sometimes the problem can be in the rendering part of your game, for example a sprite may be drawn at the wrong position or rotation, giving the appearance of incorrect physics, or it may be that your calculations are not correct. Either way, this function will help you to find and resolve the problem by drawing what is going on in your physics system. To do this, you need tell it which part of the system to draw, and this is done by passing a value created from the bits stored in various &quot;flag&quot; constants:</Description>
			<Parameter Name="flag" Type="Constant.PhysicsDebugFlag" Optional="false">The flag value for showing different debug features</Parameter>
		</Function>
		<Function Name="physics_world_gravity" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>As with all the physics functions, physics_world_gravity() will only work on an instance if the room has a physics world defined for it in the room editor or using physics_world_create(). It will then use the 0,0 defining point of the physics world to calculate the direction and strength of gravity based on the vector calculated from the xg and yg inputs. Here are some images to illustrate...</Description>
			<Parameter Name="xg" Type="Real" Optional="false">The x component of the gravity vector</Parameter>
			<Parameter Name="yg" Type="Real" Optional="false">The y component of the gravity vector</Parameter>
		</Function>
		<Function Name="physics_world_update_iterations" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Everything in GameMaker is based around steps and, normally, each event will only happen once per step. However, to get the necessary precision with the physics functions they are made to do several calculations each step which are called &quot;iterations&quot; the number of which are controlled by this function. The default number for the physics system is 10, but this can be changed to higher or lower depending how many times you want the physics to calculate each step, but it is recommended that you set this no lower than 5 and no higher than 30. You should also be aware that this function is dependent on the physics_world_update_speed() function.</Description>
			<Parameter Name="y1" Type="Real" Optional="false">the iterations (per step) that the physics system will perform</Parameter>
		</Function>
		<Function Name="physics_world_update_speed" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>GameMaker updates things based on the room speed, so that if you set it to ,say, 30, GameMaker will run 30 steps in the course of a second. However, for the physics functions that may not be enough and you may want things to be updated at a slightly faster speed to increase stability or precision. To that end we use the function physics_world_update_speed() which sets the update speed for the physics system independently of the room speed. This means that you could have a room speed of 30, but set the physics to 60, effectively doubling the speed at which the physics system updates and performs its calculations compared to the speed at which the step are updated.</Description>
			<Parameter Name="speed" Type="Real" Optional="false">the number of times per second that the physics system updates</Parameter>
		</Function>
		<Function Name="ansi_char" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function returns a string containing the character with raw BYTE value set. This will not, and should not, be displayed, but it will save correctly to disk for use in encoding.</Description>
			<Parameter Name="val" Type="Real" Optional="false">The raw byte value.</Parameter>
		</Function>
		<Function Name="chr" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function returns a string containing the character which relates to the input Unicode code for displaying. This character depends on the current drawing fonts character set code page and if no font is set, it will use the default code page for the machine.</Description>
			<Parameter Name="val" Type="Real" Optional="false">The Unicode code value to get the string from</Parameter>
		</Function>
		<Function Name="clipboard_get_text" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function will return a string of the text contained on the clipboard. if no text is stored it will return an empty string &quot;&quot;.</Description>
		</Function>
		<Function Name="clipboard_has_text" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will return true if the clipboard contains text or false if it does not.</Description>
		</Function>
		<Function Name="clipboard_set_text" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function will set the clipboard to hold the defined string. You can set it to an empty string &quot;&quot; to effectively clear the clipboard of text.</Description>
			<Parameter Name="string" Type="String" Optional="false">The text (as a string) to set the clipboard to hold.</Parameter>
		</Function>
		<Function Name="ord" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function takes a single character input string and returns the Unicode (UTF8) value for that character. Note that when used with the keyboard_check* functions, the input string can only be one character in length and can only be a number from 0 to 9 or a capitalised Roman character from A to Z.</Description>
			<Parameter Name="string" Type="String" Optional="false">The string with which to find the Unicode code.</Parameter>
		</Function>
		<Function Name="real" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function can be used to turn a given string into a real number. When using this function, numbers, minus signs, decimal points and exponential parts in the string are taken into account, while other characters (such as letters) will cause an error to be thrown. If you know, or suspect, that a string may have other characters then you can use string_digits() to remove all non-numeric characters, before using this function to turn the resulting string into a real number.</Description>
			<Parameter Name="string" Type="Any" Optional="false">The string to be converted to a real value.</Parameter>
		</Function>
		<Function Name="string" Deprecated="false" ReturnType="String" Pure="true">
			<Description>With this function you can turn any value into a string. If the real number is an integer, it will be saved with no decimal places, otherwise, it will be saved with two decimal places. If you require more decimal places, then use the function string_format(). Also note that using this function on a variable storing an array, a data structure, or a struct will convert the contents of these variables into a string which can then be output to the console or saved to a file for debugging. You are also able to use a format string with &quot;{x}&quot; placeholders (i.e. {0},{1},...) where 'X' is the argument number after the format string (starting at 0).</Description>
			<Parameter Name="val_or_format" Type="Any" Optional="false">The value to be turned into a string or a format string.</Parameter>
			<Parameter Name="..." Type="ArgumentIdentity" Optional="true">Values to replace the placeholders with.</Parameter>
		</Function>
		<Function Name="string_byte_at" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Returns the raw byte value as a real value at a given position in the given string.</Description>
			<Parameter Name="str" Type="String" Optional="false">The string to check.</Parameter>
			<Parameter Name="index" Type="Real" Optional="false">The position to get the byte from.</Parameter>
		</Function>
		<Function Name="string_byte_length" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the number of bytes in a string, but you should note that due to their being held as UTF8, this will not be equal to their string length.</Description>
			<Parameter Name="string" Type="String" Optional="false">The string to measure the number of bytes of.</Parameter>
		</Function>
		<Function Name="string_char_at" Deprecated="false" ReturnType="String" Pure="true">
			<Description>You can use this function to return a specific character at a specific position within a string, with the index starting at 1 for the first character. If no character is found or the string is shorter than the given index value, an empty string &quot;&quot; is returned, however if the given index is equal to or smaller than 0, then the first character of the string is returned.</Description>
			<Parameter Name="str" Type="String" Optional="false">The string to check.</Parameter>
			<Parameter Name="index" Type="Real" Optional="false">The position to get the character from.</Parameter>
		</Function>
		<Function Name="string_copy" Deprecated="false" ReturnType="String" Pure="true">
			<Description>With this function you can easily select a number of characters from within a string to be copied to another one. The first character in a string is always indexed as 1 and not 0 as you may expect, so to copy (for example) the first five characters of string you would have string_copy(str, 1, 5). A further example is provided below.</Description>
			<Parameter Name="str" Type="String" Optional="false">The string to copy from.</Parameter>
			<Parameter Name="index" Type="Real" Optional="false">The position of the first character in the string to copy from (numbered from 1)</Parameter>
			<Parameter Name="count" Type="Real" Optional="false">The number of characters, starting from the position of the first, to copy</Parameter>
		</Function>
		<Function Name="string_count" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the amount of times the given substring appears within a specific string. In this way you can check for how many times a single letter or a phrase is repeated in a section of stored text.</Description>
			<Parameter Name="substr" Type="String" Optional="false">The substring to check the string for.</Parameter>
			<Parameter Name="str" Type="String" Optional="false">The string to check.</Parameter>
		</Function>
		<Function Name="string_delete" Deprecated="false" ReturnType="String" Pure="true">
			<Description>You can use this function to remove a specific part of a string. So, you supply the input string and the start and end position within that string to remove characters (index starts at 1) and the function will return a new string without that section in it.</Description>
			<Parameter Name="str" Type="String" Optional="false">The string to copy and delete from.</Parameter>
			<Parameter Name="index" Type="Real" Optional="false">The position of the first character to remove.</Parameter>
			<Parameter Name="count" Type="Real" Optional="false">The number of characters to remove.</Parameter>
		</Function>
		<Function Name="string_digits" Deprecated="false" ReturnType="String" Pure="true">
			<Description>You can use this function to parse a given string and get any numbers from it. For example, say you have this text - &quot;I am 81 years old&quot;. With this function you would get a return string of &quot;81&quot;.</Description>
			<Parameter Name="string" Type="String" Optional="false">The string to get the digits from.</Parameter>
		</Function>
		<Function Name="string_format" Deprecated="false" ReturnType="String" Pure="true">
			<Description>Turns a real number into a string using your own formatting, where you can choose how many &quot;places&quot; are saved to the string and how many decimal places are saved also. Both can be very handy, some games prefer to display a score as a set number of digits, while control over decimal places can be good for a high accuracy the two decimal places of string() cannot provide. If the number of places specified is greater than the value to be shown and/or the number plus the decimal places that have been specified is less than the total places, then spaces will be added before the value to make up the difference (see the example below). Zeros will be added to the right of the decimal point if the value given is less than the total and the number of decimal places to include. The default format is no extra spaces on the left, and only two decimal places on the right, eg &quot;265.73&quot;.</Description>
			<Parameter Name="val" Type="Real" Optional="false">The real number to be turned into a string.</Parameter>
			<Parameter Name="tot" Type="Real" Optional="false">The total number of places of the main number to be shown. Zeroes or spaces will be inserted to match this.</Parameter>
			<Parameter Name="dec" Type="Real" Optional="false">The number of decimal places to be included.</Parameter>
		</Function>
		<Function Name="string_hash_to_newline" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function returns a string where the &quot;#&quot; symbol has been converted into a new line. So a string formatted as:</Description>
			<Parameter Name="string" Type="String" Optional="false">The string to convert over multiple lines</Parameter>
		</Function>
		<Function Name="string_height" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the height (in pixels) of the input string, taking into account the line separation and any line-breaks the text may have. It is very handy for calculating distances between text elements based on the tallest of the letters that make up the string as it would be drawn with draw_text() using the currently defined font.</Description>
			<Parameter Name="string" Type="String" Optional="false">The string to measure the height of.</Parameter>
		</Function>
		<Function Name="string_height_ext" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the height (in pixels) of the input string, taking into account the line separation and line-break width (which is defined as the number of pixels that the string can occupy before a line break is inserted). It is very handy for calculating distances between text elements based on the tallest of the letters that make up the string as well as the actual string length itself when spread over several lines as it would be drawn with draw_text_ext() using the currently defined font. Separation and width can be set to -1 to get the default spacing.</Description>
			<Parameter Name="string" Type="String" Optional="false">The string to measure the height of.</Parameter>
			<Parameter Name="sep" Type="Real" Optional="false">The distance in pixels between lines of text as if the string was being drawn.</Parameter>
			<Parameter Name="w" Type="Real" Optional="false">The maximum width (in pixels) of the string before a line break as if the string was bring drawn.</Parameter>
		</Function>
		<Function Name="string_insert" Deprecated="false" ReturnType="String" Pure="true">
			<Description>With this function you can create a new string made up of two strings, where one has been inserted into the other at a given position. It can be useful, for example, to add a user name into a predefined text and so make the player of your game feel more involved in the action. Keep in mind when calculating the position to insert into that strings are indexed from 1, so the first character in a string is 1 and not 0 as you may expect.</Description>
			<Parameter Name="substr" Type="String" Optional="false">The substring to be inserted.</Parameter>
			<Parameter Name="str" Type="String" Optional="false">The string to be copied.</Parameter>
			<Parameter Name="index" Type="Real" Optional="false">The position in characters of the string to insert the substring.</Parameter>
		</Function>
		<Function Name="string_last_pos" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the character position of an instance of a sub-string within a string, searching from the end of the string to the beginning (so the reverse of string_pos(). The function will return 0 if the search string is not found, or the position of the first character of the search string if it is. Keep in mind that for legacy support strings are indexed from 1, so 1 is the first position in the string, not 0 as you may expect.</Description>
			<Parameter Name="substr" Type="String" Optional="false">The substring to look for in the string.</Parameter>
			<Parameter Name="str" Type="String" Optional="false">The string.</Parameter>
		</Function>
		<Function Name="string_last_pos_ext" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the character position of an instance of a sub-string within a string, searching backwards through the string from the position given as the starting position. The function will return 0 if the search string is not found, or the position of the first character of the search string if it is. Keep in mind that for legacy support strings are indexed from 1, so 1 is the first position in the string, not 0 as you may expect.</Description>
			<Parameter Name="substr" Type="String" Optional="false">The substring to look for in the string.</Parameter>
			<Parameter Name="str" Type="String" Optional="false">The string.</Parameter>
			<Parameter Name="start_pos" Type="Real" Optional="false">The starting position to search from.</Parameter>
		</Function>
		<Function Name="string_length" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the number of characters comprising a given string. It can be useful for things like working out when to limit a custom text entry&apos;s character length (eg: capping a player&apos;s name to 10 characters). Remember that this is different to string_width() in that it measures the number of characters in the string, not its width as drawn on the screen in pixels.</Description>
			<Parameter Name="string" Type="String" Optional="false">The string to measure the number of characters of.</Parameter>
		</Function>
		<Function Name="string_letters" Deprecated="false" ReturnType="String" Pure="true">
			<Description>With this function you can remove all characters that are not classed as letters. This is handy for preventing people from entering unwanted characters into a text entry (like entering &quot;#&quot; to force a new line).</Description>
			<Parameter Name="string" Type="String" Optional="false">The string to convert to letters.</Parameter>
		</Function>
		<Function Name="string_lettersdigits" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function will return a copy of a given string with everything but its letters and digits removed, which means it can be used to remove any unwanted characters (like &quot;#&quot; or &quot;?&quot;) from, for example, a login name or a password.</Description>
			<Parameter Name="string" Type="String" Optional="false">The string to convert to letters and digits.</Parameter>
		</Function>
		<Function Name="string_lower" Deprecated="false" ReturnType="String" Pure="true">
			<Description>With this function you can force a string to contain only lower case characters.</Description>
			<Parameter Name="string" Type="String" Optional="false">The string to convert to lowercase.</Parameter>
		</Function>
		<Function Name="string_ord_at" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>You can use this function to return a specific character code at a specific position within a string, with the index starting at 1 for the first character. If no character is found or the string is shorter than the value given to index, -1 is returned.</Description>
			<Parameter Name="str" Type="String" Optional="false">The string to check.</Parameter>
			<Parameter Name="index" Type="Real" Optional="false">The position to get the character code from.</Parameter>
		</Function>
		<Function Name="string_pos" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the character position of an instance of a sub-string within a string, searching from the beginning of the string (to search from the end, use the function string_last_pos()). The function will return 0 if it&apos;s not found at all, or the position of the first character of the sub-string if it is found. Keep in mind that for legacy support strings are indexed from 1, so 1 is the first position in the string, not 0 as you may expect. One use for this is for filtering words that may be considered offensive, or for finding the correct place to insert some text into another string.</Description>
			<Parameter Name="substr" Type="String" Optional="false">The substring to look for in the string.</Parameter>
			<Parameter Name="str" Type="String" Optional="false">The string.</Parameter>
		</Function>
		<Function Name="string_pos_ext" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the character position of an instance of a sub-string within a string, searching forwards through the string from the position given as the starting position. The function will return 0 if the search string is not found, or the position of the first character of the search string if it is. Keep in mind that for legacy support strings are indexed from 1, so 1 is the first position in the string, not 0 as you may expect.</Description>
			<Parameter Name="substr" Type="String" Optional="false">The substring to look for in the string.</Parameter>
			<Parameter Name="str" Type="String" Optional="false">The string.</Parameter>
			<Parameter Name="start_pos" Type="Real" Optional="false">The starting position to search from.</Parameter>
		</Function>
		<Function Name="string_repeat" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function simply returns the same string repeated a given number of times over itself.</Description>
			<Parameter Name="str" Type="String" Optional="false">The string to repeat.</Parameter>
			<Parameter Name="count" Type="Real" Optional="false">The number of times to repeat the string.</Parameter>
		</Function>
		<Function Name="string_replace" Deprecated="false" ReturnType="String" Pure="true">
			<Description>You can use this function to parse a string looking for a specific part, which can then be replaced by the new string that you have specified.</Description>
			<Parameter Name="str" Type="String" Optional="false">The string to be copied.</Parameter>
			<Parameter Name="substr" Type="String" Optional="false">The substring within the string to be replaced.</Parameter>
			<Parameter Name="newstr" Type="String" Optional="false">The new substring to replace the previous one.</Parameter>
		</Function>
		<Function Name="string_replace_all" Deprecated="false" ReturnType="String" Pure="true">
			<Description>You can use this function to parse a string looking for specific parts, which can then be replaced by the new string that you have specified in all places that they occur.</Description>
			<Parameter Name="str" Type="String" Optional="false">The string to be copied.</Parameter>
			<Parameter Name="substr" Type="String" Optional="false">The substring within the string to be replaced in all instances.</Parameter>
			<Parameter Name="newstr" Type="String" Optional="false">The new substring to replace the previous one(s).</Parameter>
		</Function>
		<Function Name="string_set_byte_at" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function sets a byte directly in a string (based on the UTF8 format) and returns a copy of the string with the changes.</Description>
			<Parameter Name="str" Type="String" Optional="false">The string to change the byte of.</Parameter>
			<Parameter Name="pos" Type="Real" Optional="false">The position within the string (starting at 1) to change the byte of.</Parameter>
			<Parameter Name="byte" Type="Real" Optional="false">The new byte value.</Parameter>
		</Function>
		<Function Name="string_upper" Deprecated="false" ReturnType="String" Pure="true">
			<Description>With this function you can force a string to contain only upper case characters.</Description>
			<Parameter Name="string" Type="String" Optional="false">The string to convert to uppercase.</Parameter>
		</Function>
		<Function Name="string_width" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the width (in pixels) of the input string, taking into account any line-breaks the text may have. It is very handy for calculating distances between text elements based on the total width of the letters that make up the string as it would be drawn with draw_text() using the currently defined font.</Description>
			<Parameter Name="string" Type="String" Optional="false">The string to measure the width of.</Parameter>
		</Function>
		<Function Name="string_width_ext" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will return the maximum width (in pixels) of the input string, taking into account the line separation and line-break width (which is defined as the number of pixels that the string can occupy before a line break is inserted). It is very handy for calculating distances between text elements based on the maximum width of a string that is split over several lines as it would be drawn with draw_text_ext() using the currently defined font. Separation and width can be set to -1 to get the default spacing.</Description>
			<Parameter Name="string" Type="String" Optional="false">The string to measure the width of.</Parameter>
			<Parameter Name="sep" Type="Real" Optional="false">The distance in pixels between lines of text as if the string was being drawn.</Parameter>
			<Parameter Name="w" Type="Real" Optional="false">The maximum width (in pixels) of the string before a line break as if the string was bring drawn.</Parameter>
		</Function>
		<Function Name="string_ext" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function returns a new string using a format string with placeholder information and an array of values. The placeholders should follow the format "{x}" where x is the index of the value in the array that it should be replaced with.</Description>
			<Parameter Name="format" Type="String" Optional="false">The input string format.</Parameter>
			<Parameter Name="val_array" Type="Array" Optional="false">An array of values to replace the placeholders.</Parameter>
		</Function>
		<Function Name="string_trim_start" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function removes whitespace from the beginning of a string (left). You can optionally provide an array of strings to be used for trimming if you want to remove something other than whitespaces.</Description>
			<Parameter Name="str" Type="String" Optional="false">The input string.</Parameter>
			<Parameter Name="substrs" Type="Array[String]" Optional="true">An array of strings to be used during trimming.</Parameter>
		</Function>
		<Function Name="string_trim_end" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function removes whitespace from the end of a string (right). You can optionally provide an array of strings to be used for trimming if you want to remove something other than whitespaces.</Description>
			<Parameter Name="str" Type="String" Optional="false">The input string.</Parameter>
			<Parameter Name="substrs" Type="Array[String]" Optional="true">An array of strings to be used during trimming.</Parameter>
		</Function>
		<Function Name="string_trim" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function removes whitespace from both ends of a string and returns a new string, without modifying the original string. You can optionally provide an array of strings to be used for trimming if you want to remove something other than whitespaces.</Description>
			<Parameter Name="str" Type="String" Optional="false">The input string.</Parameter>
			<Parameter Name="substrs" Type="Array[String]" Optional="true">An array of strings to be used during trimming.</Parameter>
		</Function>
		<Function Name="string_starts_with" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function determines whether a string begins with the characters of a specified string, returning true or false as appropriate.</Description>
			<Parameter Name="str" Type="String" Optional="false">The input string.</Parameter>
			<Parameter Name="substr" Type="String" Optional="false">The string to check against.</Parameter>
		</Function>
		<Function Name="string_ends_with" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function determines whether a string ends with the characters of a specified string, returning true or false as appropriate.</Description>
			<Parameter Name="str" Type="String" Optional="false">The input string.</Parameter>
			<Parameter Name="substr" Type="String" Optional="false">The string to check against.</Parameter>
		</Function>
		<Function Name="string_split" Deprecated="false" ReturnType="Array[String]" Pure="true">
			<Description>This function splits string into an ordered list of substrings by searching for the delimiter, puts these substrings into an array, and returns the array.</Description>
			<Parameter Name="str" Type="String" Optional="false">The input string.</Parameter>
			<Parameter Name="delimiter" Type="String" Optional="false">The delimiter string to search for.</Parameter>
			<Parameter Name="remove_empty" Type="Bool" Optional="true">Removes empty entries from the output array.</Parameter>
			<Parameter Name="max_splits" Type="Real" Optional="true">The maximum number of splits that are allowed.</Parameter>
		</Function>
		<Function Name="string_split_ext" Deprecated="false" ReturnType="Array[String]" Pure="true">
			<Description>This function splits string into an ordered list of substrings by searching from an array of delimiters, puts these substrings into an array, and returns the array.</Description>
			<Parameter Name="str" Type="String" Optional="false">The input string.</Parameter>
			<Parameter Name="delimiter_array" Type="Array[String]" Optional="false">An array of delimiter strings to search for.</Parameter>
			<Parameter Name="remove_empty" Type="Bool" Optional="true">Removes empty entries from the output array.</Parameter>
			<Parameter Name="max_splits" Type="Real" Optional="true">The maximum number of splits that are allowed.</Parameter>
		</Function>
		<Function Name="string_join" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function joins a set of arguments using the provided delimiter, non-string values will be converted to string.</Description>
			<Parameter Name="delimiter" Type="String" Optional="false">The delimiter to use when joining the values.</Parameter>
			<Parameter Name="..." Type="ArgumentIdentity" Optional="false">The values be joined using the delimiter.</Parameter>
		</Function>
		<Function Name="string_join_ext" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function joins the elements of an array using the provided delimiter, non-string values will be converted to string.</Description>
			<Parameter Name="delimiter" Type="String" Optional="false">The delimiter to use when joining the values.</Parameter>
			<Parameter Name="values_array" Type="Array" Optional="false">An array of values be joined using the delimiter.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="true">The offset of the range (allows negative values, from end of string).</Parameter>
			<Parameter Name="length" Type="Real" Optional="true">The number of elements to join (allows negative values, reverse traversing).</Parameter>
		</Function>
		<Function Name="string_concat" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function concatenates a set of arguments, non-string values will be converted to string.</Description>
			<Parameter Name="..." Type="ArgumentIdentity" Optional="false">The values be concatenated.</Parameter>
		</Function>
		<Function Name="string_concat_ext" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function concatenates a range of elements in an array, non-string values will be converted to string.</Description>
			<Parameter Name="values_array" Type="Array" Optional="false">An array of values be concatenated.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="true">The offset of the range (allows negative values, from end of string).</Parameter>
			<Parameter Name="length" Type="Real" Optional="true">The number of elements to concatenate (allows negative values, reverse traversing).</Parameter>
		</Function>
		<Function Name="string_foreach" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function iterates over each character of a string calling a provided function. It allows to specify a start position (1-based) and a length.</Description>
			<Parameter Name="str" Type="String" Optional="false">The string to iterate over.</Parameter>
			<Parameter Name="func" Type="Function" Optional="false">A function to be called for each character in range (allows arguments 'char' and 'pos').</Parameter>
			<Parameter Name="pos" Type="Real" Optional="true">The position to start the iteration from (allows negative values, from end of string).</Parameter>
			<Parameter Name="length" Type="Real" Optional="true">The number of iterations to execute (allows negative values, reverse traversing).</Parameter>
		</Function>
		<Function Name="array_copy" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can copy all or part of an array into another array at any position. You need to supply both the source and the destination arrays (both need to have been created previously), as well as a position within the source array to copy from and a position within the destination array to copy to. Finally you need to specify the length of the array (or the length of the part that you want) to copy. If the data being copied exceeds the length of the destination array, the array will be extended to accept the data.</Description>
			<Parameter Name="dest" Type="Array" Optional="false">The ID of the array to copy to.</Parameter>
			<Parameter Name="dest_index" Type="Real" Optional="false">The index within the array to copy to.</Parameter>
			<Parameter Name="src" Type="Array" Optional="false">The ID of the array to copy from.</Parameter>
			<Parameter Name="src_index" Type="Real" Optional="false">The index with the array to start copying from.</Parameter>
			<Parameter Name="length" Type="Real" Optional="false">The length (number of array indices) to copy.</Parameter>
		</Function>
		<Function Name="array_create" Deprecated="false" ReturnType="Array[ArgumentIdentity]" Pure="true">
			<Description>With this function you can create a 1D array of a given size. You tell the function the length of the array to create, and it will return the &quot;handle&quot; for the array which you can then assign to a variable. Arrays created in this way will have each entry initialised to 0 unless you specify an (optional) initialisation value. If you do supply the extra value for initialising the array, then all indices within the new array will be set to that instead of 0, but note that the function will have a greater performance overhead in this case.</Description>
			<Parameter Name="size" Type="Real" Optional="false">The size of the array to create.</Parameter>
			<Parameter Name="value" Type="ArgumentIdentity" Optional="true">The value to use to initialise all array indices (optional).</Parameter>
		</Function>
		<Function Name="array_delete" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can delete a value (or values) from an array at any given position. The function requires you to provide a variable that holds the array, the index (position) in the array to delete from, as well as the number of values to delete.</Description>
			<Parameter Name="array" Type="Array" Optional="false">The variable that holds the array.</Parameter>
			<Parameter Name="index" Type="Real" Optional="false">The index (position) in the array to delete the value(s) from.</Parameter>
			<Parameter Name="number" Type="Real" Optional="false">The number of values to delete.</Parameter>
		</Function>
		<Function Name="array_equals" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check to see if two arrays are equal (equivalent or the same). You give the two arrays to check, and the function will return true if they are equal (either equivalent or the same) or false if they are not. Note that this is not the same as checking if two arrays are the same using ==, which will not check to see if the two arrays hold equivalent values, but only to see if the arrays are referencing the same initial array. For example:</Description>
			<Parameter Name="array1" Type="Array" Optional="false">The index of the first array.</Parameter>
			<Parameter Name="array2" Type="Array" Optional="false">The index of the second array.</Parameter>
		</Function>
		<Function Name="array_get" Deprecated="false" ReturnType="Any" Pure="true">
			<Description>With this function you can retrieve the value from an index in an array. The function requires you to provide a variable that holds the array and the index to get the value from within that array. Note that if the array index given is out of bounds then the game will crash with an error. This function can also be used for multi-dimension arrays, as long as you specify which dimension you want to get when you supply the array index, following this pattern:</Description>
			<Parameter Name="array" Type="Array" Optional="false">The variable that holds the array.</Parameter>
			<Parameter Name="index" Type="Real" Optional="false">The index of the array to get the value from.</Parameter>
		</Function>
		<Function Name="array_insert" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can insert a value (or values) into an array at any given position. The function requires you to provide a variable that holds the array, the index (position) in the array to insert at, as well as at least one value to insert, although you can optionally provide further arguments and they will all be inserted into the array in consecutive order from the given index.</Description>
			<Parameter Name="array" Type="Array" Coerce="true" Optional="false">The variable that holds the array.</Parameter>
			<Parameter Name="index" Type="Real" Optional="false">The index (position) in the array to insert the value(s) </Parameter>
			<Parameter Name="..." Type="ArgumentIdentity" Optional="true">The value to insert</Parameter>
		</Function>
		<Function Name="array_length" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can get the length (number of entries) of an array dimension. You supply the array index value and the function will return an integer value representing the number of entries the array contains. This function can also be used for multi-dimension arrays, as long as you specify which dimension you want to get the length of when you supply the array index, following this pattern:</Description>
			<Parameter Name="array" Type="Array" Optional="false">The index of the array to check.</Parameter>
		</Function>
		<Function Name="array_pop" Deprecated="false" ReturnType="ArgumentIdentity" Pure="false">
			<Description>This function will remove the last element in the given array and return its value. If the array is empty undefined is returned.</Description>
			<Parameter Name="array" Type="Array" Optional="false">The variable that holds the array.</Parameter>
		</Function>
		<Function Name="array_push" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can push a value (or values) onto the end of an array without having to know the length of the array. The function requires you to provide a variable that holds the array as well as at least one value to push, although you can optionally provide further arguments and they will all be pushed onto the array in consecutive order.</Description>
			<Parameter Name="array" Type="Array" Coerce="true" Optional="false">The variable that holds the array.</Parameter>
			<Parameter Name="..." Type="ArgumentIdentity" Optional="true">The value to push onto the end of the array</Parameter>
		</Function>
		<Function Name="array_resize" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can resize an existing array dimension to a new size. You supply the array to be resized as well as the new number of indices for the array, and the function will resize that array. Note that this function is designed for resizing an array down to a smaller length as you can resize up by simply setting a new index in the array. That said, if you do use it to size up an array, any new indices will be set to the default value of 0.</Description>
			<Parameter Name="array" Type="Array" Optional="false">The index of the array to resize.</Parameter>
			<Parameter Name="new_size" Type="Real" Optional="false">The new size for the array (an integer, starting from 0).</Parameter>
		</Function>
		<Function Name="array_set" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the value of an index in an array to a value. The function requires you to provide a variable that holds the array as well as the index to set and the value to set it to. This function can also be used for multi-dimension arrays, as long as you specify which dimension you want to set when you supply the array index, following this pattern:</Description>
			<Parameter Name="array" Type="Array" Optional="false">The variable that holds the array.</Parameter>
			<Parameter Name="index" Type="Real" Optional="false">The index of the array to set the value for.</Parameter>
			<Parameter Name="value" Type="Any" Optional="false">The value to set.</Parameter>
		</Function>
		<Function Name="array_sort" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can sort an array in ascending order or descending order or using a custom function to define the sort order. The function requires you to provide the array to sort, and then either of the following:</Description>
			<Parameter Name="array" Type="Array" Optional="false">The variable that holds the array.</Parameter>
			<Parameter Name="sorttype_or_function" Type="Any" Optional="false">The sort type (true for ascending or false for descending) or a function reference to use for sorting.</Parameter>
		</Function>
		<Function Name="array_shift" Deprecated="false" ReturnType="ArgumentIdentity" Pure="false">
			<Description>This function will remove the first element in the given array and return its value. If the array is empty undefined is returned.</Description>
			<Parameter Name="array" Type="Array" Optional="false">The variable that holds the array.</Parameter>
		</Function>
		<Function Name="array_shuffle" Deprecated="false" ReturnType="Array" Pure="true">
			<Description>With this function you can shuffle an array (or subsection), a new array is returned that is a copy of the original with the entries shuffled.</Description>
			<Parameter Name="array" Type="Array" Optional="false">The variable that holds the array.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="true">The offset to be used when shuffling the array. Negative values will count from the end of the array. Defaults to 0.</Parameter>
			<Parameter Name="length" Type="Real" Optional="true">How many entries should be shuffled. Defaults to array_length() - 1.</Parameter>
		</Function>
		<Function Name="array_shuffle_ext" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can shuffle an array (or subsection) in place, nothing is returned</Description>
			<Parameter Name="array" Type="Array" Optional="false">The variable that holds the array.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="true">The offset to be used when shuffling the array. Negative values will count from the end of the array. Defaults to 0.</Parameter>
			<Parameter Name="length" Type="Real" Optional="true">How many entries should be shuffled. Negative values will traverse the array in reverse order. Defaults to array_length() - 1.</Parameter>
		</Function>
		<Function Name="array_get_index" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the first index at which a given element can be found in the array (or subsection). If the value is not found the function returns -1.</Description>
			<Parameter Name="array" Type="Array" Optional="false">The variable that holds the array.</Parameter>
			<Parameter Name="value" Type="Any" Optional="false">The value to search for.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="true">The offset to be used when searching the array. Negative values will count from the end of the array. Defaults to 0.</Parameter>
			<Parameter Name="length" Type="Real" Optional="true">How many entries should be searched. Negative values will traverse the array in reverse order. Defaults to array_length() - 1.</Parameter>
		</Function>
		<Function Name="array_contains" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>Determines whether an array includes a certain value among its entries, returning true or false as appropriate.</Description>
			<Parameter Name="array" Type="Array" Optional="false">The variable that holds the array.</Parameter>
			<Parameter Name="value" Type="Any" Optional="false">The value to check inside the array.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="true">The offset to be used when looking through the array. Negative values will count from the end of the array. Defaults to 0.</Parameter>
			<Parameter Name="length" Type="Real" Optional="true">How many entries should be checked. Negative values will traverse the array in reverse order. Defaults to array_length() - 1.</Parameter>
		</Function>
		<Function Name="array_contains_ext" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>Determines whether an array includes certain values among its entries, returning true or false as appropriate. Doesn't account for order.</Description>
			<Parameter Name="array" Type="Array" Optional="false">The variable that holds the array.</Parameter>
			<Parameter Name="values" Type="Array" Optional="false">An array of values to be search inside the provided array.</Parameter>
			<Parameter Name="matchAll" Type="Bool" Optional="true">Whether the match should be complete of partial.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="true">The offset to be used when looking through the array. Negative values will count from the end of the array. Defaults to 0.</Parameter>
			<Parameter Name="length" Type="Real" Optional="true">How many entries should be checked. Negative values will traverse the array in reverse order. Defaults to array_length() - 1.</Parameter>
		</Function>
		<Function Name="array_first" Deprecated="false" ReturnType="ArgumentIdentity" Pure="true">
			<Description>With this function you can return the first element of the array or undefined if the array is empty.</Description>
			<Parameter Name="array" Type="Array" Optional="false">The variable that holds the array.</Parameter>
		</Function>
		<Function Name="array_last" Deprecated="false" ReturnType="ArgumentIdentity" Pure="true">
			<Description>With this function you can return the last element of the array or undefined if the array is empty.</Description>
			<Parameter Name="array" Type="Array" Optional="false">The variable that holds the array.</Parameter>
		</Function>
		<Function Name="array_create_ext" Deprecated="false" ReturnType="Array" Pure="true">
			<Description>With this function you can create an array of a given size, initialising each element with the provided function.</Description>
			<Parameter Name="size" Type="Real" Optional="false">The size of the array to create.</Parameter>
			<Parameter Name="function" Type="Function" Optional="false">The function to be used for element initialisation. Accepts the following arguments (index) and should return the init value of the element.</Parameter>
		</Function>
		<Function Name="array_find_index" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can find the index of the first element that returns true to the given predicate. This function allows a custom range definition and reverse order.</Description>
			<Parameter Name="array" Type="Array" Optional="false">The variable that holds the array.</Parameter>
			<Parameter Name="function" Type="Function" Optional="false">The function used to perform the search. Accepts the following arguments (value, index) and should return a boolean.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="true">The offset to be used when executing the function. Negative values will count from the end of the array. Defaults to 0.</Parameter>
			<Parameter Name="length" Type="Real" Optional="true">On how many entries should the function be executed. Negative values will traverse the array in reverse order. Defaults to array_length() - 1.</Parameter>
		</Function>
		<Function Name="array_any" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check if any of the elements returns true to the given predicate. This function allows a custom range definition and reverse order.</Description>
			<Parameter Name="array" Type="Array" Optional="false">The variable that holds the array.</Parameter>
			<Parameter Name="function" Type="Function" Optional="false">The function used to perform the check. Accepts the following arguments (value, index) and should return a boolean.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="true">The offset to be used when executing the function. Negative values will count from the end of the array. Defaults to 0.</Parameter>
			<Parameter Name="length" Type="Real" Optional="true">On how many entries should the function be executed. Negative values will traverse the array in reverse order. Defaults to array_length() - 1.</Parameter>
		</Function>
		<Function Name="array_all" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check if all of the elements return true to the given predicate. This function allows a custom range definition and reverse order.</Description>
			<Parameter Name="array" Type="Array" Optional="false">The variable that holds the array.</Parameter>
			<Parameter Name="function" Type="Function" Optional="false">The function used to perform the check. Accepts the following arguments (value, index) and should return a boolean.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="true">The offset to be used when executing the function. Negative values will count from the end of the array. Defaults to 0.</Parameter>
			<Parameter Name="length" Type="Real" Optional="true">On how many entries should the function be executed. Negative values will traverse the array in reverse order. Defaults to array_length() - 1.</Parameter>
		</Function>
		<Function Name="array_foreach" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can execute a method on all or a range of elements in the array. This function allows a custom range definition and reverse order.</Description>
			<Parameter Name="array" Type="Array" Optional="false">The variable that holds the array.</Parameter>
			<Parameter Name="function" Type="Function" Optional="false">The function to be executed for each array entry. Accepts the following arguments (value, index).</Parameter>
			<Parameter Name="offset" Type="Real" Optional="true">The offset to be used when executing the function. Negative values will count from the end of the array. Defaults to 0.</Parameter>
			<Parameter Name="length" Type="Real" Optional="true">On how many entries should the function be executed. Negative values will traverse the array in reverse order. Defaults to array_length() - 1.</Parameter>
		</Function>
		<Function Name="array_reduce" Deprecated="false" ReturnType="Any" Pure="true">
			<Description>With this function you can traverse the array/range performing a cumulative operation on its elements. This function allows a custom range definition and reverse order.</Description>
			<Parameter Name="array" Type="Array" Optional="false">The variable that holds the array.</Parameter>
			<Parameter Name="function" Type="Function" Optional="false">The function to be executed for each array entry. Accepts the following arguments (prev, value, index) and should return a new 'prev'.</Parameter>
			<Parameter Name="init" Type="Any" Optional="true">The initial value to be used for the previous element. Defaults to array[offset], if ommitted first iteration will be skipped.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="true">The offset to be used when executing the function. Negative values will count from the end of the array. Defaults to 0.</Parameter>
			<Parameter Name="length" Type="Real" Optional="true">On how many entries should the function be executed. Negative values will traverse the array in reverse order. Defaults to array_length() - 1.</Parameter>
		</Function>
		<Function Name="array_copy_while" Deprecated="false" ReturnType="Array" Pure="true">
			<Description>With this function you can create a new array from elements of the current array while the predicate is matched. This function allows a custom range definition and reverse order.</Description>
			<Parameter Name="array" Type="Array" Optional="false">The variable that holds the array.</Parameter>
			<Parameter Name="function" Type="Function" Optional="false">The function to be executed for each array entry. Accepts the following arguments (value, index) and should return a boolean.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="true">The offset to be used when executing the function. Negative values will count from the end of the array. Defaults to 0.</Parameter>
			<Parameter Name="length" Type="Real" Optional="true">On how many entries should the function be executed. Negative values will traverse the array in reverse order. Defaults to array_length() - 1.</Parameter>
		</Function>
		<Function Name="array_filter" Deprecated="false" ReturnType="Array" Pure="true">
			<Description>With this function you can create a new array with only the elements that return true to the given predicate. This function allows a custom range definition and reverse order.</Description>
			<Parameter Name="array" Type="Array" Optional="false">The variable that holds the array.</Parameter>
			<Parameter Name="function" Type="Function" Optional="false">The function to be executed as filter. Accepts the following arguments (value, index) and should return a boolean.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="true">The offset to be used when executing the function. Negative values will count from the end of the array. Defaults to 0.</Parameter>
			<Parameter Name="length" Type="Real" Optional="true">On how many entries should the function be executed. Negative values will traverse the array in reverse order. Defaults to array_length() - 1.</Parameter>
		</Function>
		<Function Name="array_filter_ext" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can mutate an existing array to filter the elements that return true to the given predicate. This function returns the number of filtered elements. The filtered elements will be padded to offset and order by the traversing direction. This function allows a custom range definition and reverse order.</Description>
			<Parameter Name="array" Type="Array" Optional="false">The variable that holds the array.</Parameter>
			<Parameter Name="function" Type="Function" Optional="false">The function to be executed as filter. Accepts the following arguments (value, index) and should return a boolean.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="true">The offset to be used when executing the function. Negative values will count from the end of the array. Defaults to 0.</Parameter>
			<Parameter Name="length" Type="Real" Optional="true">On how many entries should the function be executed. Negative values will traverse the array in reverse order. Defaults to array_length() - 1.</Parameter>
		</Function>
		<Function Name="array_map" Deprecated="false" ReturnType="Array" Pure="true">
			<Description>With this function you can create a new array by mapping the current array elements using the given predicate. This function allows a custom range definition and reverse order.</Description>
			<Parameter Name="array" Type="Array" Optional="false">The variable that holds the array.</Parameter>
			<Parameter Name="function" Type="Function" Optional="false">The function to be executed for mapping the values. Accepts the following arguments (value, index) and should return the mapped value.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="true">The offset to be used when executing the function. Negative values will count from the end of the array. Defaults to 0.</Parameter>
			<Parameter Name="length" Type="Real" Optional="true">On how many entries should the function be executed. Negative values will traverse the array in reverse order. Defaults to array_length() - 1.</Parameter>
		</Function>
		<Function Name="array_map_ext" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can mutate an existing array by mapping the element values using the given predicate. This function returns the number of mapped elements. The mapped elements will keep their original position on the array. This function allows a custom range definition and reverse order.</Description>
			<Parameter Name="array" Type="Array" Optional="false">The variable that holds the array.</Parameter>
			<Parameter Name="function" Type="Function" Optional="false">The function to be executed for mapping the values. Accepts the following arguments (value, index) and should return the mapped value.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="true">The offset to be used when executing the function. Negative values will count from the end of the array. Defaults to 0.</Parameter>
			<Parameter Name="length" Type="Real" Optional="true">On how many entries should the function be executed. Negative values will traverse the array in reverse order. Defaults to array_length() - 1.</Parameter>
		</Function>
		<Function Name="array_unique" Deprecated="false" ReturnType="Array" Pure="true">
			<Description>With this function you can create a new array with only unique values. This function allows a custom range definition and reverse order.</Description>
			<Parameter Name="array" Type="Array" Optional="false">The variable that holds the array.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="true">The offset to be used when executing the function. Negative values will count from the end of the array. Defaults to 0.</Parameter>
			<Parameter Name="length" Type="Real" Optional="true">On how many entries should the function be executed. Negative values will traverse the array in reverse order. Defaults to array_length() - 1.</Parameter>
		</Function>
		<Function Name="array_unique_ext" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can mutate an existing array with only unique value. This function returns the number of unique elements. The mapped elements will be padded to offset and order by the traversing direction. This function allows a custom range definition and reverse order.</Description>
			<Parameter Name="array" Type="Array" Optional="false">The variable that holds the array.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="true">The offset to be used when executing the function. Negative values will count from the end of the array. Defaults to 0.</Parameter>
			<Parameter Name="length" Type="Real" Optional="true">On how many entries should the function be executed. Negative values will traverse the array in reverse order. Defaults to array_length() - 1.</Parameter>
		</Function>
		<Function Name="array_reverse" Deprecated="false" ReturnType="Array" Pure="true">
			<Description>With this function you can create a new array with the elements in reverse order. This function allows a custom range definition.</Description>
			<Parameter Name="array" Type="Array" Optional="false">The variable that holds the array.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="true">The offset to be used when executing the function. Negative values will count from the end of the array. Defaults to 0.</Parameter>
			<Parameter Name="length" Type="Real" Optional="true">On how many entries should the function be executed. Negative values will traverse the array in reverse order. Defaults to array_length() - 1.</Parameter>
		</Function>
		<Function Name="array_reverse_ext" Deprecated="false" ReturnType="Real" Pure="false">
			<Description>With this function you can mutate an existing array reversing the elements order. This function returns the number of reversed elements. This function allows a custom range definition.</Description>
			<Parameter Name="array" Type="Array" Optional="false">The variable that holds the array.</Parameter>
			<Parameter Name="offset" Type="Real" Optional="true">The offset to be used when executing the function. Negative values will count from the end of the array. Defaults to 0.</Parameter>
			<Parameter Name="length" Type="Real" Optional="true">On how many entries should the function be executed. Negative values will traverse the array in reverse order. Defaults to array_length() - 1.</Parameter>
		</Function>
		<Function Name="array_concat" Deprecated="false" ReturnType="Array" Pure="true">
			<Description>With this function you can concatenate two or more arrays into a single one.</Description>
			<Parameter Name="array0" Type="Array" Optional="false">The variable that holds the first array.</Parameter>
			<Parameter Name="array1" Type="Array" Optional="false">The variable that holds the second array.</Parameter>
			<Parameter Name="..." Type="Array" Optional="true">The variable that holds the nth array.</Parameter>
		</Function>
		<Function Name="array_union" Deprecated="false" ReturnType="Array" Pure="true">
			<Description>With this function you can join two or more arrays into a single one, removing the duplicates</Description>
			<Parameter Name="array0" Type="Array" Optional="false">The variable that holds the first array.</Parameter>
			<Parameter Name="array1" Type="Array" Optional="false">The variable that holds the second array.</Parameter>
			<Parameter Name="..." Type="Array" Optional="true">The variable that holds the nth array.</Parameter>
		</Function>
		<Function Name="array_intersection" Deprecated="false" ReturnType="Array" Pure="true">
			<Description>With this function you can create an array of elements common to all the input arrays, removing duplicates.</Description>
			<Parameter Name="array0" Type="Array" Optional="false">The variable that holds the first array.</Parameter>
			<Parameter Name="array1" Type="Array" Optional="false">The variable that holds the second array.</Parameter>
			<Parameter Name="..." Type="Array" Optional="true">The variable that holds the nth array.</Parameter>
		</Function>
		<Function Name="bool" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function will attempt to convert a given value into a boolean data type, where the value will be returned as true if it is greater than 0.5 and false otherwise.</Description>
			<Parameter Name="n" Type="Any" Optional="false">The value to convert.</Parameter>
		</Function>
		<Function Name="instanceof" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function can be used to get the name of the function that was used to create a struct when the struct was created using a constructor function and the new operator. You supply the variable with the struct reference to check and the function will return either a string with the function name or undefined. Note that if you pass the function a struct literal (ie: a struct that was created without using a constructor function) then it will simply return the string &quot;struct&quot;. This function can also be used to check if a struct reference is a weak reference or not, in which case the function will return the string &quot;weakref&quot; instead of the name of the function that created the struct for more information, see the function weak_ref_create()).</Description>
			<Parameter Name="struct" Type="Struct" Optional="false">The struct reference to use.</Parameter>
		</Function>
		<Function Name="is_instanceof" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>Returns true if &quot;struct&quot; has &quot;constructor_name&quot; as part of its inheritance hierarchy</Description>
			<Parameter Name="struct" Type="Struct" Optional="false">The struct reference to check.</Parameter>
			<Parameter Name="constructor_name" Type="Function,Asset.GMScript" Optional="false">The constructor reference to check against</Parameter>
		</Function>
		<Function Name="static_get" Deprecated="false" ReturnType="Struct" Pure="true">
			<Description>returns the static struct for the given struct or function / script, returns undefined if no static struct is set.</Description>
			<Parameter Name="struct" Type="Struct,Function,Asset.GMScript" Optional="false">The struct or Function reference to use.</Parameter>
		</Function>
		<Function Name="static_set" Deprecated="false" ReturnType="Struct" Pure="true">
			<Description>sets the static struct on the given struct.</Description>
			<Parameter Name="struct" Type="Struct" Optional="false">The struct reference to set.</Parameter>
			<Parameter Name="static_struct" Type="Struct" Optional="false">The struct to set as the static</Parameter>
		</Function>
		<Function Name="int64" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function will attempt to convert a given value into a 64bit integer, where the value must be either a real, a string, an int64, an int32, or a ptr. Anything else will cause the game to crash with an error message. You can check to see if a variable holds an int64 using the function is_int64().</Description>
			<Parameter Name="val" Type="Any" Optional="false">The value to convert.</Parameter>
		</Function>
		<Function Name="is_array" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function can be used to check and see if a variable holds an array (it will return true) or not (in which case it will return false).</Description>
			<Parameter Name="n" Type="Any" Coerce="true" Optional="false">The variable to check.</Parameter>
		</Function>
		<Function Name="is_bool" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function returns whether a given variable is a boolean (true ior false) or not. In some cases you want to check and see if a variable in GameMaker holds a boolean value, and that&apos;s when you would use this function.</Description>
			<Parameter Name="n" Type="Any" Coerce="true" Optional="false">The argument to check.</Parameter>
		</Function>
		<Function Name="is_callable" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function returns whether a given variable can be called (either beeing a method or a valid function index).</Description>
			<Parameter Name="n" Type="Any" Coerce="true" Optional="false">The argument to check.</Parameter>
		</Function>
		<Function Name="is_infinity" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function returns whether a given variable is infinity (an infinite number) or not, returning true if it is, and false if it is not.</Description>
			<Parameter Name="n" Type="Any" Coerce="true" Optional="false">The argument to check.</Parameter>
		</Function>
		<Function Name="is_int32" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function returns whether a given variable is a 32bit integer or not. In some cases you want to check and see what data type a variable holds in GameMaker and that&apos;s when you would use this function. It returns true or false depending on whether the value is an int 32 or not.</Description>
			<Parameter Name="n" Type="Any" Coerce="true" Optional="false">The argument to check.</Parameter>
		</Function>
		<Function Name="is_int64" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function returns whether a given variable is a 64bit integer or not. In some cases you want to check and see what data type a variable holds in GameMaker and that&apos;s when you would use this function. It returns true or false depending on whether the value is an int64 or not.</Description>
			<Parameter Name="n" Type="Any" Coerce="true" Optional="false">The argument to check.</Parameter>
		</Function>
		<Function Name="is_method" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function can be used to check and see if a variable is a method variable (it will return true) or not (in which case it will return false).</Description>
			<Parameter Name="n" Type="Any" Coerce="true" Optional="false">The variable to check.</Parameter>
		</Function>
		<Function Name="is_nan" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function returns whether a given variable is NaN (not a number) or not, returning true if it is, and false if it is not.</Description>
			<Parameter Name="n" Type="Any" Coerce="true" Optional="false">The argument to check.</Parameter>
		</Function>
		<Function Name="is_numeric" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function returns whether a given variable is a numeric value (real, int32, int64 or boolean) or not. In some cases you want to check and see if a variable in GameMaker holds any numeric value, and that&apos;s when you would use this function. The function will return true if the given input is numeric, and false otherwise.</Description>
			<Parameter Name="n" Type="Any" Coerce="true" Optional="false">The input to check.</Parameter>
		</Function>
		<Function Name="is_ptr" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function returns whether a given variable is a pointer or not. In some cases you want to check and see what data type a variable holds in GameMaker and that&apos;s when you would use this function. It returns true or false depending on whether the value is a pointer or not.</Description>
			<Parameter Name="n" Type="Any" Coerce="true" Optional="false">The argument to check.</Parameter>
		</Function>
		<Function Name="is_real" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function returns whether a given variable is a real number (single, double or integer) or not. In some cases you want to check and see if a variable holds a real number, and that&apos;s when you would use this function. It does not return the real number but rather true or false, so a value of, for example, &quot;fish&quot; would return false, however a value of 200 would return true.</Description>
			<Parameter Name="n" Type="Any" Coerce="true" Optional="false">The argument to check.</Parameter>
		</Function>
		<Function Name="is_string" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function returns whether a given variable is a string number or not. In some cases you want to check and see if a variable in GameMaker holds a string and not a real and that&apos;s when you would use this function. It does not return the string but rather true or false, so a value of, for example, &quot;fish&quot; for n will return true, but a value of 200 for n will return false.</Description>
			<Parameter Name="n" Type="Any" Coerce="true" Optional="false">The argument to check.</Parameter>
		</Function>
		<Function Name="is_struct" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function checks if the supplied value is a struct. It returns true if it is, otherwise it returns false.</Description>
			<Parameter Name="val" Type="Any" Coerce="true" Optional="false">The value to check.</Parameter>
		</Function>
		<Function Name="is_undefined" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function returns whether a given variable is defined or not. In some cases you want to check and see what data type a variable holds in GameMaker and that&apos;s when you would use this function. It returns true or false depending on whether the value is defined or not.</Description>
			<Parameter Name="n" Type="Any" Optional="false">The argument to check.</Parameter>
		</Function>
		<Function Name="method" Deprecated="false" ReturnType="Function" Pure="true">
			<Description>With this function you can bind any function that has previously been defined to a given instance or struct, creating a method variable that can be used later. You supply the instance ID to use (it must be an instance that is active and in the room, and can&apos;t be an object ID) or a struct reference, as well as the ID of the function that you want to bind. The function will return a method which can be called from the variable it is assigned to (see the code example below). It is worth noting that you can bind built-in functions as well as user defined functions, and you can also supply undefined as the instance/struct argument meaning that the current self scope will be used for the binding.</Description>
			<Parameter Name="struct_ref_or_instance_id" Type="Any" Optional="false">The unique reference or ID value of the struct or instance to use (or undefined for self)</Parameter>
			<Parameter Name="function" Type="Function" Optional="false">The ID of the function to use</Parameter>
		</Function>
		<Function Name="method_get_index" Deprecated="false" ReturnType="Asset.GMScript" Pure="true">
			<Description>With this function you can retrieve the Script index for the script where the method was defined. If the method was not defined in a script then the function will return -1, otherwise it will return the index value for the script.</Description>
			<Parameter Name="method" Type="Function" Optional="false">The method variable to check</Parameter>
		</Function>
		<Function Name="method_get_self" Deprecated="false" ReturnType="Struct,Id.Instance" Pure="true">
			<Description>With this function you can retrieve the instance ID or struct reference which is the self context used when the method is called. If the variable is not a method then the function will return undefined. Please note that the function may also return the constant pointer_null, in which case the current self is being used at the time of the call.</Description>
			<Parameter Name="method" Type="Function" Optional="false">The method variable to check.</Parameter>
		</Function>
		<Function Name="ptr" Deprecated="false" ReturnType="Pointer" Pure="true">
			<Description>This function will attempt to convert a given value into a pointer data type, where the value must be either a real, a string, an int64, an int32, or a ptr. Anything else will cause the game to crash with an error message.</Description>
			<Parameter Name="n" Type="Any" Optional="false">The value to convert.</Parameter>
		</Function>
		<Function Name="typeof" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function returns the data type of any given variable as a string. The possible return values are listed in the table below:</Description>
			<Parameter Name="variable" Type="Any" Optional="false">The variable to get the data type of.</Parameter>
		</Function>
		<Function Name="variable_clone" Deprecated="false" ReturnType="Any" Pure="true">
			<Description>This function can accept any kind of data as its first parameter, which represents the variable or data structure to be cloned (won't work for instances). The second parameter, "depth" is applicable only for arrays and structs and sets the level of depth to which the cloning process should be performed (with a maximum value of 128)</Description>
			<Parameter Name="value" Type="Any" Optional="false">The value to be cloned</Parameter>
			<Parameter Name="depth" Type="Real" Optional="true">The depth to be used during the cloning process (defaults to the maxiumum of 128)</Parameter>
		</Function>
		<Function Name="variable_get_hash" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can compute the hash of a given struct or instance member allowing for faster access (see 'struct_get_from_hash' and 'struct_set_from_hash').</Description>
			<Parameter Name="name" Type="Any" Optional="false">The name of the variable to compute the hash of</Parameter>
		</Function>
		<Function Name="variable_global_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check whether a global scope variable exists or not. You supply the global variable name to check for as a string (see example code below) and the function will return true if a global variable with the given name exists or false otherwise.</Description>
			<Parameter Name="name" Type="String" Optional="false">The name of the global variable to check for (as a string)</Parameter>
		</Function>
		<Function Name="variable_global_get" Deprecated="false" ReturnType="Any" Pure="true">
			<Description>With this function you can get the value from a given named global variable. You supply the name of the global variable to get the value of as a string (see example code below) and the function will return the value held by the global variable or undefined if the variable does not exist.</Description>
			<Parameter Name="name" Type="String" Optional="false">The name of the global variable to get (as a string)</Parameter>
		</Function>
		<Function Name="variable_global_set" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the value of a given global variable. You supply the name of the global variable to set the value of as a string (see example code below), and then the value to set (can be any valid data type). If the global variable does not exist already in the game it will be created and then assigned the value.</Description>
			<Parameter Name="name" Type="String" Optional="false">The name of the global variable to set (as a string)</Parameter>
			<Parameter Name="val" Type="Any" Optional="false">The value to set the global variable to</Parameter>
		</Function>
		<Function Name="variable_instance_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check whether an instance scope variable exists or not. You supply the unique instance ID value (which can be found from the Instance Properties in the room editor, or is returned when you call the function instance_create_layer()) as well as the variable name to check for as a string (see example code below). The function will return true if a variable with the given name exists for the instance and false otherwise.</Description>
			<Parameter Name="instance_id" Type="Id.Instance" Optional="false">The unique ID value of the instance to check</Parameter>
			<Parameter Name="name" Type="String" Optional="false">The name of the variable to check for (as a string)</Parameter>
		</Function>
		<Function Name="variable_instance_get" Deprecated="false" ReturnType="Any" Pure="true">
			<Description>With this function you can get the value from a given named variable. You supply the unique instance ID value (which can be found from the Instance Properties in the room editor, or is returned when you call the function instance_create_layer()) as well as the name of the variable to get the value of as a string (see example code below). The function will return the value held by the variable, or undefined if the variable does not exist.</Description>
			<Parameter Name="instance_id" Type="Id.Instance,Constant.All" Optional="false">The unique ID value of the instance to use</Parameter>
			<Parameter Name="name" Type="String" Optional="false">The name of the variable to get (as a string)</Parameter>
		</Function>
		<Function Name="variable_instance_get_names" Deprecated="false" ReturnType="Array[String]" Pure="true">
			<Description>With this function you can retrieve an array populated with the instance variable names for an instance, or the global variables for a game. When you pass in an instance ID value, each entry in the array will be a string of the variable name that corresponds to an instance scope variable that has been created in the instance. However if you pass in the keyword global, each entry in the array will be a string of the variable name that corresponds to an global scope variable.</Description>
			<Parameter Name="instance_id/global" Type="Id.Instance,Constant.All" Optional="false">The unique ID value of the instance to check or the keyword global</Parameter>
		</Function>
		<Function Name="variable_instance_names_count" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can find the total number number of variables defined for an instance. You supply the instance ID to check, and the function will return an integer value for the number of variables encountered, or (if no instance of the given ID exists) -1.</Description>
			<Parameter Name="instance_id" Type="Id.Instance" Optional="false">The unique ID value of the instance to check.</Parameter>
		</Function>
		<Function Name="variable_instance_set" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>With this function you can set the value of a given variable in an instance. You supply the unique instance ID value (which can be found from the Instance Properties in the room editor, or is returned when you call the function instance_create_layer()) as well as the name of the variable to set the value of as a string (see example code below), and then finally the value to set (can be any valid data type). If the variable does not exist already in the instance it will be created and then assigned the value.</Description>
			<Parameter Name="instance_id" Type="Id.Instance" Optional="false">The unique ID value of the instance to use</Parameter>
			<Parameter Name="name" Type="String" Optional="false">The name of the variable to set (as a string)</Parameter>
			<Parameter Name="val" Type="Any" Optional="false">The value to set the variable to</Parameter>
		</Function>
		<Function Name="variable_struct_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check whether a variable exists within the given struct or not. You supply the struct reference to use as well as the variable name to check for as a string (see example code below). The function will return true if a variable with the given name exists for the struct and false otherwise.</Description>
			<Parameter Name="struct" Type="Struct" Optional="false">The struct reference to check</Parameter>
			<Parameter Name="name" Type="Any" Optional="false">The name of the struct variable to check for (as a string)</Parameter>
		</Function>
		<Function Name="variable_struct_get" Deprecated="false" ReturnType="Any" Pure="true">
			<Description>With this function you can get the value from a given named variable within a struct. You supply the struct reference as well as the name of the variable to get the value of as a string (see example code below). The function will return the value held by the variable or undefined if the named variable does not exist.</Description>
			<Parameter Name="struct" Type="Struct" Optional="false">The struct reference to use</Parameter>
			<Parameter Name="name" Type="Any" Optional="false">The name of the variable to get (as a string)</Parameter>
		</Function>
		<Function Name="variable_struct_get_names" Deprecated="false" ReturnType="Array[String]" Pure="true">
			<Description>With this function you can retrieve an array populated with the variable names from a struct. You pass in the struct reference to check, and each entry in the array will be a string of the variable names that the struct contains.</Description>
			<Parameter Name="struct" Type="Struct" Optional="false">The struct reference to check.</Parameter>
		</Function>
		<Function Name="variable_struct_names_count" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can find the total number number of variables defined for a struct. You supply the struct ID to check, and the function will return an integer value for the number of variables encountered, or (if no struct of the given ID exists) -1.</Description>
			<Parameter Name="struct_id" Type="Struct" Optional="false">The unique ID value of the struct to check.</Parameter>
		</Function>
		<Function Name="variable_struct_remove" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can remove a variable from a struct. You supply the struct ID to remove the variable from and the string name of the variable to be removed.</Description>
			<Parameter Name="struct" Type="Struct" Optional="false">The struct reference to remove the variable from</Parameter>
			<Parameter Name="name" Type="Any" Optional="false">The name of the variable to remove (as a string)</Parameter>
		</Function>
		<Function Name="variable_struct_set" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the value of a given variable in a struct. You supply the struct reference as well as the name of the variable to set the value of as a string (see example code below), and then finally the value to set (can be any valid data type). If the variable does not exist already in the struct it will be created and then assigned the value.</Description>
			<Parameter Name="struct" Type="Struct" Optional="false">The struct reference to set</Parameter>
			<Parameter Name="name" Type="Any" Optional="false">The name of the variable to set (as a string)</Parameter>
			<Parameter Name="val" Type="Any" Optional="false">The value to set the variable to</Parameter>
		</Function>
		<Function Name="struct_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>With this function you can check whether a variable exists within the given struct or not. You supply the struct reference to use as well as the variable name to check for as a string (see example code below). The function will return true if a variable with the given name exists for the struct and false otherwise.</Description>
			<Parameter Name="struct" Type="Struct" Optional="false">The struct reference to check</Parameter>
			<Parameter Name="name" Type="Any" Optional="false">The name of the struct variable to check for (as a string)</Parameter>
		</Function>
		<Function Name="struct_foreach" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can execute a method on all of the members in the struct.</Description>
			<Parameter Name="struct" Type="Struct" Optional="false">The variable that holds the struct.</Parameter>
			<Parameter Name="func" Type="Function" Optional="false">The name of the struct variable to check for (as a string)</Parameter>
		</Function>
		<Function Name="struct_get" Deprecated="false" ReturnType="Any" Pure="true">
			<Description>With this function you can get the value from a given named variable within a struct. You supply the struct reference as well as the name of the variable to get the value of as a string (see example code below). The function will return the value held by the variable or undefined if the named variable does not exist.</Description>
			<Parameter Name="struct" Type="Struct" Optional="false">The struct reference to use</Parameter>
			<Parameter Name="name" Type="Any" Optional="false">The name of the variable to get (as a string)</Parameter>
		</Function>
		<Function Name="struct_get_from_hash" Deprecated="false" ReturnType="Any" Pure="true">
			<Description>With this function you can get the value from a given named variable within a struct. You supply the struct reference as well as the hash of the variable to get the value of (returned from 'variable_get_hash'). The function will return the value held by the variable or undefined if the named variable does not exist.</Description>
			<Parameter Name="struct" Type="Struct" Optional="false">The struct reference to use</Parameter>
			<Parameter Name="hash" Type="Real" Optional="false">The hash of the variable to get (returned from 'variable_get_hash')</Parameter>
		</Function>
		<Function Name="struct_get_names" Deprecated="false" ReturnType="Array[String]" Pure="true">
			<Description>With this function you can retrieve an array populated with the variable names from a struct. You pass in the struct reference to check, and each entry in the array will be a string of the variable names that the struct contains.</Description>
			<Parameter Name="struct" Type="Struct" Optional="false">The struct reference to check.</Parameter>
		</Function>
		<Function Name="struct_names_count" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can find the total number number of variables defined for a struct. You supply the struct ID to check, and the function will return an integer value for the number of variables encountered, or (if no struct of the given ID exists) -1.</Description>
			<Parameter Name="struct_id" Type="Struct" Optional="false">The unique ID value of the struct to check.</Parameter>
		</Function>
		<Function Name="struct_remove" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can remove a variable from a struct. You supply the struct ID to remove the variable from and the string name of the variable to be removed.</Description>
			<Parameter Name="struct" Type="Struct" Optional="false">The struct reference to remove the variable from</Parameter>
			<Parameter Name="name" Type="Any" Optional="false">The name of the variable to remove (as a string)</Parameter>
		</Function>
		<Function Name="struct_set" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the value of a given variable in a struct. You supply the struct reference as well as the name of the variable to set the value of as a string (see example code below), and then finally the value to set (can be any valid data type). If the variable does not exist already in the struct it will be created and then assigned the value.</Description>
			<Parameter Name="struct" Type="Struct" Optional="false">The struct reference to set</Parameter>
			<Parameter Name="name" Type="Any" Optional="false">The name of the variable to set (as a string)</Parameter>
			<Parameter Name="val" Type="Any" Optional="false">The value to set the variable to</Parameter>
		</Function>
		<Function Name="struct_set_from_hash" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set the value of a given variable in a struct. You supply the struct reference as well as the hash of the variable to set the value of (returned from 'variable_get_hash'), and then finally the value to set (can be any valid data type). If the variable does not exist already in the struct it will be created and then assigned the value.</Description>
			<Parameter Name="struct" Type="Struct" Optional="false">The struct reference to set</Parameter>
			<Parameter Name="hash" Type="Real" Optional="false">The hash of the variable to set (returned from 'variable_get_hash')</Parameter>
			<Parameter Name="val" Type="Any" Optional="false">The value to set the variable to</Parameter>
		</Function>
		<Function Name="analytics_event" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Description>This function will send the specified text to the analytics provider that you have set up through the HTML5 Game Options. This function can be used to create a custom analytic to track something outside of the scope of the provider being used.</Description>
			<Parameter Name="string" Type="String" Optional="false">A string to send to the provider</Parameter>
		</Function>
		<Function Name="analytics_event_ext" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Description>This function will send the specified text to the analytics provider that you have set up through the HTML5 Game Options. This function can be used to create a custom analytic to track something outside of the scope of the provider being used, and will also accept custom parameter/value pairs, where the parameter is a string and the value a real number. For Google Analytics, you can only add in one extra pair while Flurry will accept up to 7.</Description>
			<Parameter Name="string" Type="String" Optional="false">A string to send to the provider.</Parameter>
			<Parameter Name="string_param[0 -9]" Type="Any" Optional="false">The parameter to send (a string).</Parameter>
			<Parameter Name="value[0 - 9]" Type="Any" Optional="false">The value of the parameter (a real number).</Parameter>
			<Parameter Name="..." Type="Any" Optional="true" />
		</Function>
		<Function Name="browser_input_capture" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can set whether the browser window should capture all input (set it to false) or whether the game should capture the input (set it to true). Note that this function is for use with the HTML5 module only.</Description>
			<Parameter Name="enable" Type="Bool" Optional="false" />
		</Function>
		<Function Name="clickable_add" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can create a custom, clickable, icon that acts as a &quot;button&quot; outside of the game canvas, but within the browser window itself. The function will return an id value which must be stored in a variable to be used in all further button functions that reference the new icon. This function is very useful to prevent the browser creating a pop-up window when clicking on the button as it is all done through GameMaker itself.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x position within the window.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position within the window.</Parameter>
			<Parameter Name="tpe" Type="Real" Optional="false">The texture page entry for the sprite to be used.</Parameter>
			<Parameter Name="url" Type="String" Optional="false">The URL (website address) to link to, or the script to be run.</Parameter>
			<Parameter Name="target" Type="String" Optional="false">This is the target area to open the URL in (see description).</Parameter>
			<Parameter Name="params" Type="Any" Optional="false">The various parameters for the icon (see description).</Parameter>
		</Function>
		<Function Name="clickable_add_ext" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>With this function you can create a custom, clickable, icon that acts as a &quot;button&quot; outside of the game canvas, but within the browser window itself. The function will return an id value which must be stored in a variable to be used in all further button functions that reference the new icon. This function is very useful to prevent the browser creating a pop-up window when clicking on the button as it is all done through GameMaker itself.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x position within the window.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y position within the window.</Parameter>
			<Parameter Name="tpe" Type="Real" Optional="false">The texture page entry for the sprite to be used.</Parameter>
			<Parameter Name="url" Type="String" Optional="false">The URL (website address) to link to, or the script to be run.</Parameter>
			<Parameter Name="target" Type="String" Optional="false">This is the target area to open the URL in (see description).</Parameter>
			<Parameter Name="params" Type="Any" Optional="false">The various parameters for the icon (see description).</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The image alpha of the icon (default 1).</Parameter>
			<Parameter Name="scale" Type="Real" Optional="false">The scale of the icon (default 1).</Parameter>
		</Function>
		<Function Name="clickable_change" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can change the sprite and position of a clickable icon previously created with clickable_add(). Please note that the position is based on the window, not the canvas, (0,0) position and that the sprite must be referenced directly from the texture page (see: sprite_get_tpe()).</Description>
			<Parameter Name="index" Type="Real" Optional="false">The index of the clickable icon to change.</Parameter>
			<Parameter Name="tpe" Type="Real" Optional="false">The texture page entry for the sprite to be used.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The new x position within the window.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The new y position within the window.</Parameter>
		</Function>
		<Function Name="clickable_change_ext" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>With this function you can change the sprite and position of a clickable icon previously created with clickable_add(). Bear in mind that the position is based on the window, not the canvas, (0,0) position and that the sprite must be referenced directly from the texture page (see: sprite_get_tpe()). This function also permits you to change the scale of the sprite used (as a multiplier so that 1 is the default, 0.5 would be half and 2 would be double) and the alpha value from 0 (fully transparent) to 1 (fully opaque) for the final icon on the screen.</Description>
			<Parameter Name="index" Type="Real" Optional="false">The index of the clickable icon to change.</Parameter>
			<Parameter Name="tpe" Type="Real" Optional="false">The texture page entry for the sprite to be used</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The new x position within the window.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The new y position within the window.</Parameter>
			<Parameter Name="scale" Type="Real" Optional="false">The scale of the icon (default 1).</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The image alpha of the icon (default 1).</Parameter>
		</Function>
		<Function Name="clickable_delete" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function must be used to remove a clickable icon previously created with clickable_add() from the game window.</Description>
			<Parameter Name="index" Type="Real" Optional="false">Index of the clickable icon to remove.</Parameter>
		</Function>
		<Function Name="clickable_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>This function returns whether a clickable DOM icon has been created with the specified index exists or not. Please note, that the value used for checking must have been initialised previously or else you will get an error causing GameMaker to close.</Description>
			<Parameter Name="index" Type="Real" Optional="false">The index of the clickable to check.</Parameter>
		</Function>
		<Function Name="clickable_set_style" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function lets you set the CSS style properties for the given button via the key/value pairs in the provided DS Map. You need to have previously created the both the button element (using clickable_add()) and the DS Map and supply the stored indices to each as arguments.</Description>
			<Parameter Name="index" Type="Real" Optional="false">The index of the clickable icon to style.</Parameter>
			<Parameter Name="map" Type="Undefined" Optional="false">The index of the DS Map to set the style from.</Parameter>
		</Function>
		<Function Name="url_get_domain" Deprecated="false" ReturnType="String" Pure="true">
			<Description>You can use this to get the domain where your HTML5 game is being played.</Description>
		</Function>
		<Function Name="url_open" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This will open the specified URL on the browser of the chosen target device, or, if you are using the HTML5 module, in the currently open browser.</Description>
			<Parameter Name="url" Type="String" Optional="false">The URL (website address) to link to.</Parameter>
		</Function>
		<Function Name="url_open_ext" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This will open the specified URL on the browser of the chosen target device, or, if you are using the HTML5 module, in the currently open browser. The &quot;target&quot; parameter that you specify is the same as the standard JavaScript &quot;name&quot; value when you use the open() method, and you should be aware that all but &quot;_self&quot; may result in the browser blocking, or asking the user if they wish to allow it.</Description>
			<Parameter Name="url" Type="String" Optional="false">The URL (website address) to link to.</Parameter>
			<Parameter Name="target" Type="String" Optional="false">This is the target area to open the URL in.</Parameter>
		</Function>
		<Function Name="url_open_full" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This will open the specified URL on the browser of the chosen target device, or, if you are using the HTML5 module, in the currently open browser. The &quot;target&quot; parameter that you specify is the same as the standard JavaScript &quot;name&quot; value when you use the open() method (be aware that all but &quot;_self&quot; may result in the browser blocking, or asking the user if they wish to allow it) and the &quot;options&quot; is the same as the JavaScript &quot;specs&quot; parameter for controlling what properties the new window/tab should display (not all browsers may support all features).</Description>
			<Parameter Name="url" Type="String" Optional="false">The URL (website address) to link to.</Parameter>
			<Parameter Name="target" Type="String" Optional="false">This is the target area to open the URL in (see description).</Parameter>
			<Parameter Name="options" Type="String" Optional="false">Standard browser options (see description).</Parameter>
		</Function>
		<Function Name="array_length_1d" Deprecated="true" ReturnType="Real" Pure="true">
			<Parameter Name="variable" Type="Array" Optional="false" />
		</Function>
		<Function Name="array_length_2d" Deprecated="true" ReturnType="Real" Pure="true">
			<Parameter Name="variable" Type="Array" Optional="false" />
			<Parameter Name="index" Type="Real" Optional="false" />
		</Function>
		<Function Name="array_height_2d" Deprecated="true" ReturnType="Real" Pure="true">
			<Parameter Name="variable" Type="Array" Optional="false" />
		</Function>
		<Function Name="randomize" Deprecated="false" ReturnType="Undefined" Locale="US" Pure="false">
			<Description>This function sets the seed to a random value. Should you need to keep a consistent value over a number of runs of a game, you should be using random_set_seed(). Please note, that when using the random number functions in GameMaker the initial seed is always the same, as this makes tracing errors and debugging far easier. Should you wish to test with true random, you should call this function at the start of your game. The function will return the new randomised seed value (an unsigned 32bit integer).</Description>
		</Function>
		<Function Name="dot_product_normalized" Deprecated="false" ReturnType="Real" Locale="US" Pure="true">
			<Description>The dot product is a value expressing the angular relationship between two vectors and is found by taking two vectors, multiplying them together and then adding the results. The name &quot;dot product&quot; is derived from the centered dot &quot;·&quot; that is often used to designate this operation (the alternative name &quot;scalar product&quot; emphasizes the scalar rather than vector nature of the result).</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the first vector.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the first vector.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the second vector.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the second vector.</Parameter>
		</Function>
		<Function Name="dot_product_3d_normalized" Deprecated="false" ReturnType="Real" Locale="US" Pure="true">
			<Description>The dot product is a value expressing the angular relationship between two vectors and is found by taking two vectors, multiplying them together and then adding the results. The name &quot;dot product&quot; is derived from the centered dot &quot;·&quot; that is often used to designate this operation (the alternative name &quot;scalar product&quot; emphasizes the scalar rather than vector nature of the result).</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the first vector.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the first vector.</Parameter>
			<Parameter Name="z1" Type="Real" Optional="false">The z coordinate of the first vector.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the second vector.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the second vector.</Parameter>
			<Parameter Name="z2" Type="Real" Optional="false">The z coordinate of the second vector.</Parameter>
		</Function>
		<Function Name="draw_set_color" Deprecated="false" ReturnType="Undefined" Locale="US" Pure="false">
			<Description>With this function you can set the base draw colour for the game. This value will affect all further drawing where appropriate, including fonts, forms, primitives and 3D. If any of those assets are drawn with their own colour value changed, this value will be ignored.</Description>
			<Parameter Name="col" Type="Constant.Color" Optional="false">The colour to set for drawing.</Parameter>
		</Function>
		<Function Name="draw_get_color" Deprecated="false" ReturnType="Constant.Color" Locale="US" Pure="true">
			<Description>This function returns the current draw colour which is used for drawing forms, text, primitives and un-textured 3D models. This can be set with the draw_set_color() function.</Description>
		</Function>
		<Function Name="merge_color" Deprecated="false" ReturnType="Constant.Color" Locale="US" Pure="true">
			<Description>With this function you can take two colours and then merge them together to make a new colour. The amount of each of the component colours can be defined by changing the &quot;amount&quot; argument, where a value of 0 will return the first colour (col1), a value of 1 will return the second colour (col2) and a value in between will return the corresponding mix. For example, a value of 0.5 will mix the two colours equally. The following image illustrates how this works by merging the colours red and blue together:</Description>
			<Parameter Name="col1" Type="Constant.Color" Optional="false">The first colour to merge</Parameter>
			<Parameter Name="col2" Type="Constant.Color" Optional="false">The second colour to merge</Parameter>
			<Parameter Name="amount" Type="Real" Optional="false">How much of each colour should be merged. For example, 0 will return col1, 1 will return col2, and 0.5 would return a merge of both colours equally</Parameter>
		</Function>
		<Function Name="make_color_rgb" Deprecated="false" ReturnType="Constant.Color" Locale="US" Pure="true">
			<Description>GameMaker provides this function (as well as others) to permit the user to make their own colours. This particular function takes three component parts, the red, the green and the blue components of the colour that you wish to make. These values are taken as being between 0 and 255 so you can make 16,777,216 (256*256*256) colours with this! Below you can see an image of how these components look when separated:</Description>
			<Parameter Name="red" Type="Real" Optional="false">The red component of the colour</Parameter>
			<Parameter Name="green" Type="Real" Optional="false">The green component of the colour</Parameter>
			<Parameter Name="blue" Type="Real" Optional="false">The blue component of the colour</Parameter>
		</Function>
		<Function Name="make_color_hsv" Deprecated="false" ReturnType="Constant.Color" Locale="US" Pure="true">
			<Description>GameMaker provides this function (as well as others) to permit the user to make their own colours. This particular function takes three component parts, the hue, the saturation and the value (also know as &quot;luminosity&quot;) to create the colour desired. These values are taken as being between 0 and 255 so you can make 16,777,216 (256*256*256) colours with this! Below you can see an image of how these components look when separated:</Description>
			<Parameter Name="hue" Type="Real" Optional="false">The hue of the colour</Parameter>
			<Parameter Name="sat" Type="Real" Optional="false">How saturated the colour is</Parameter>
			<Parameter Name="val" Type="Real" Optional="false">How dark the colour is</Parameter>
		</Function>
		<Function Name="color_get_red" Deprecated="false" ReturnType="Real" Locale="US" Pure="true">
			<Description>This function returns the amount of red used to make the given color, with the value being between 0 and 255, where 0 is no red and 255 is all red. The following image illustrates this:</Description>
			<Parameter Name="col" Type="Constant.Color" Optional="false">The color to check</Parameter>
		</Function>
		<Function Name="color_get_green" Deprecated="false" ReturnType="Real" Locale="US" Pure="true">
			<Description>This function returns the amount of green used to make the given color, with the value being between 0 and 255, where 0 is no green and 255 is all green. The following image illustrates this:</Description>
			<Parameter Name="col" Type="Constant.Color" Optional="false">The color to check</Parameter>
		</Function>
		<Function Name="color_get_blue" Deprecated="false" ReturnType="Real" Locale="US" Pure="true">
			<Description>This function returns the amount of blue used to make the given color, with the value being between 0 and 255, where 0 is no blue and 255 is all blue. The following image illustrates this:</Description>
			<Parameter Name="col" Type="Constant.Color" Optional="false">The color to check</Parameter>
		</Function>
		<Function Name="color_get_hue" Deprecated="false" ReturnType="Real" Locale="US" Pure="true">
			<Description>This function will return the hue of the given color. This is the &quot;pure&quot; color tone which is part of the hue, saturation and value (luminosity) method for defining a color. The following image illustrates how this value corresponds to the HSV scale of color:</Description>
			<Parameter Name="col" Type="Constant.Color" Optional="false">The color to check</Parameter>
		</Function>
		<Function Name="color_get_saturation" Deprecated="false" ReturnType="Real" Locale="US" Pure="true">
			<Description>This function will return the saturation of the given color. This is the amount of the color tone that is mixed into the final color and is part of the hue, saturation and value (luminosity) method for defining a color. The following image illustrates how this value corresponds to the HSV scale of color:</Description>
			<Parameter Name="col" Type="Constant.Color" Optional="false">The color to check</Parameter>
		</Function>
		<Function Name="color_get_value" Deprecated="false" ReturnType="Real" Locale="US" Pure="true">
			<Description>This function will return the value (luminosity) of the given color. This is the amount of the &quot;light&quot; that is mixed into the final color and is part of the hue, saturation and value method for defining a color. The following image illustrates how this value corresponds to the HSV scale of color:</Description>
			<Parameter Name="col" Type="Constant.Color" Optional="false">The colour to check</Parameter>
		</Function>
		<Function Name="draw_text_color" Deprecated="false" ReturnType="Undefined" Locale="US" Pure="false">
			<Description>This function will draw text in a similar way to draw_text() only now you can choose the colours to use for colouring the text as well as the alpha value, and these new values will be used instead of the base drawing colour and alpha.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of the drawn string.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of the drawn string.</Parameter>
			<Parameter Name="string" Type="Any" Optional="false">The string to draw.</Parameter>
			<Parameter Name="c1" Type="Constant.Color" Optional="false">The colour for the top left of the drawn text.</Parameter>
			<Parameter Name="c2" Type="Constant.Color" Optional="false">The colour for the top right of the drawn text.</Parameter>
			<Parameter Name="c3" Type="Constant.Color" Optional="false">The colour for the bottom right of the drawn text.</Parameter>
			<Parameter Name="c4" Type="Constant.Color" Optional="false">The colour for the bottom left of the drawn text.</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha for the text.</Parameter>
		</Function>
		<Function Name="draw_text_ext_color" Deprecated="false" ReturnType="Undefined" Locale="US" Pure="false">
			<Description>This function is a combination of the base draw_text() function with the draw_text_ext() and draw_text_colour() functions, permitting you to define gradient colours for text as well as the line spacing and maximum width per line all together.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of the drawn string.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of the drawn string.</Parameter>
			<Parameter Name="string" Type="Any" Optional="false">The string to draw.</Parameter>
			<Parameter Name="sep" Type="Real" Optional="false">The distance in pixels between lines of text.</Parameter>
			<Parameter Name="w" Type="Real" Optional="false">The maximum width in pixels of the string before a line break.</Parameter>
			<Parameter Name="c1" Type="Constant.Color" Optional="false">The colour for the top left of the drawn text.</Parameter>
			<Parameter Name="c2" Type="Constant.Color" Optional="false">The colour for the top right of the drawn text.</Parameter>
			<Parameter Name="c3" Type="Constant.Color" Optional="false">The colour for the bottom right of the drawn text.</Parameter>
			<Parameter Name="c4" Type="Constant.Color" Optional="false">The colour for the bottom left of the drawn text.</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha for the text.</Parameter>
		</Function>
		<Function Name="draw_text_transformed_color" Deprecated="false" ReturnType="Undefined" Locale="US" Pure="false">
			<Description>This function is a combination of the base draw_text() function with the draw_text_transformed() and draw_text_colour() functions, permitting you to scale and rotate text as well as colour it with a gradient fill and change its alpha value, ignoring the base alpha and colour settings for drawing.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of the drawn string.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of the drawn string.</Parameter>
			<Parameter Name="string" Type="Any" Optional="false">The string to draw.</Parameter>
			<Parameter Name="xscale" Type="Real" Optional="false">The horizontal scale.</Parameter>
			<Parameter Name="yscale" Type="Real" Optional="false">The vertical scale.</Parameter>
			<Parameter Name="angle" Type="Real" Optional="false">The angle of the text.</Parameter>
			<Parameter Name="c1" Type="Constant.Color" Optional="false">The colour for the top left of the drawn text.</Parameter>
			<Parameter Name="c2" Type="Constant.Color" Optional="false">The colour for the top right of the drawn text.</Parameter>
			<Parameter Name="c3" Type="Constant.Color" Optional="false">The colour for the bottom right of the drawn text.</Parameter>
			<Parameter Name="c4" Type="Constant.Color" Optional="false">The colour for the bottom left of the drawn text.</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha for the text.</Parameter>
		</Function>
		<Function Name="draw_text_ext_transformed_color" Deprecated="false" ReturnType="Undefined" Locale="US" Pure="false">
			<Description>This function is a combination of the base draw_text() function with the draw_text_ext(), draw_text_transformed() and draw_text_colour() functions. As such, this is the most general of all functions for drawing text and gives a large amount of flexibility when drawing. Note that the &quot;width&quot; argument is based on a scale of 1, so if the scale is different, this value should be changed proportionally. For example, if the base width for a line break is 300 and you set the scale to 2, then the text will appear wrong, over-running the given width. Instead you should have set the width to 150 to compensate the scaling.</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of the drawn string.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of the drawn string.</Parameter>
			<Parameter Name="string" Type="Any" Optional="false">The string to draw.</Parameter>
			<Parameter Name="sep" Type="Real" Optional="false">The distance in pixels between lines of text.</Parameter>
			<Parameter Name="w" Type="Real" Optional="false">The maximum width in pixels of the string before a line break.</Parameter>
			<Parameter Name="xscale" Type="Real" Optional="false">The horizontal scale.</Parameter>
			<Parameter Name="yscale" Type="Real" Optional="false">The vertical scale.</Parameter>
			<Parameter Name="angle" Type="Real" Optional="false">The angle of the text.</Parameter>
			<Parameter Name="c1" Type="Constant.Color" Optional="false">The colour for the top left of the drawn text.</Parameter>
			<Parameter Name="c2" Type="Constant.Color" Optional="false">The colour for the top right of the drawn text.</Parameter>
			<Parameter Name="c3" Type="Constant.Color" Optional="false">The colour for the bottom right of the drawn text.</Parameter>
			<Parameter Name="c4" Type="Constant.Color" Optional="false">The colour for the bottom left of the drawn text.</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha for the text.</Parameter>
		</Function>
		<Function Name="draw_point_color" Deprecated="false" ReturnType="Undefined" Locale="US" Pure="false">
			<Description>With this function you can draw a single pixel anywhere on the screen with a colour that you define. The colour settings will over-ride the base colour set with the function draw_set_colour().</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of the point.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of the point.</Parameter>
			<Parameter Name="col1" Type="Constant.Color" Optional="false">The colour of the point.</Parameter>
		</Function>
		<Function Name="draw_line_color" Deprecated="false" ReturnType="Undefined" Locale="US" Pure="false">
			<Description>With this function you can draw a 1 pixel wide line with the colour blended between colour 1 at the first point and colour 2 at the second point. The colour settings will over-ride the base colour set with the function draw_set_colour(). Please note that the line being drawn may need different values (+/-1 on the x, y) to be drawn with the desired dimensions due to differences across the various supported platforms.</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the start of the line.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the start of the line.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the end of the line.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the end of the line.</Parameter>
			<Parameter Name="col1" Type="Constant.Color" Optional="false">The colour of the start of the line.</Parameter>
			<Parameter Name="col2" Type="Constant.Color" Optional="false">The colour of the end of the line.</Parameter>
		</Function>
		<Function Name="draw_line_width_color" Deprecated="false" ReturnType="Undefined" Locale="US" Pure="false">
			<Description>With this function you can draw a line of a specific width with the colour blended between colour 1 at the first point and colour 2 at the second point. The colour settings will over-ride the base colour set with the function draw_set_colour(). Please note that the line being drawn may need different values (+/-1 on the x, y) to be drawn with the desired dimensions due to differences across the various supported platforms.</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the start of the line.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the start of the line.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the end of the line.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the end of the line.</Parameter>
			<Parameter Name="w" Type="Real" Optional="false">The width in pixels of the line.</Parameter>
			<Parameter Name="col1" Type="Constant.Color" Optional="false">The colour of the start of the line.</Parameter>
			<Parameter Name="col2" Type="Constant.Color" Optional="false">The colour of the end of the line.</Parameter>
		</Function>
		<Function Name="draw_rectangle_color" Deprecated="false" ReturnType="Undefined" Locale="US" Pure="false">
			<Description>With this function you can draw either an outline of a rectangle or a filled rectangle by defining an area where the (x1,y1) position is the top left corner and the (x2,y2) position is the bottom right corner. If it is filled you can define the individual colours for each corner point and if these colours are not the same, you will get a gradient effect from one to the other (the colour settings will over-ride the base colour set with the function draw_set_colour()). Please note that the rectangle being drawn may need different values (+/-1 on the x, y, or width or height) to be drawn with the desired dimensions due to differences across the various supported platforms.</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the left of the rectangle.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the top of the rectangle.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the right of the rectangle.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the bottom of the rectangle.</Parameter>
			<Parameter Name="col1" Type="Constant.Color" Optional="false">The colour of the top left corner.</Parameter>
			<Parameter Name="col2" Type="Constant.Color" Optional="false">The colour of the top right corner.</Parameter>
			<Parameter Name="col3" Type="Constant.Color" Optional="false">The colour of the bottom right corner.</Parameter>
			<Parameter Name="col4" Type="Constant.Color" Optional="false">The colour of the bottom left corner.</Parameter>
			<Parameter Name="outline" Type="Bool" Optional="false">Whether the rectangle is an outline (true) or filled in (false).</Parameter>
		</Function>
		<Function Name="draw_roundrect_color" Deprecated="false" ReturnType="Undefined" Locale="US" Pure="false">
			<Description>With this function you can draw either an outline of a rounded rectangle or a filled rounded rectangle where the (x1,y1) position is the top left corner and the (x2,y2) position is the bottom right corner. If it is filled you can define the individual colours for the centre and the edges, and if these colours are not the same, you will get a gradient effect from one to the other (the colour settings will over-ride the base colour set with the function draw_set_colour()).You can define how precise the drawing of the corners is with the function draw_set_circle_precision(), but the corners are always drawn with a fixed radius. Should you need to change the corner radius you should use the function draw_roundrect_colour_ext(). Please note that the rectangle being drawn may need different values (+/-1 on the x, y, or width or height) to be drawn with the desired dimensions due to differences across the various supported platforms.</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the left of the rounded rectangle.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the top of the rounded rectangle.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the right of the rounded rectangle.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the bottom of the rounded rectangle.</Parameter>
			<Parameter Name="col1" Type="Constant.Color" Optional="false">The center colour.</Parameter>
			<Parameter Name="col2" Type="Constant.Color" Optional="false">The outside edge colour.</Parameter>
			<Parameter Name="outline" Type="Bool" Optional="false">Whether the rectangle is an outline (true) or filled in (false).</Parameter>
		</Function>
		<Function Name="draw_roundrect_color_ext" Deprecated="false" ReturnType="Undefined" Locale="US" Pure="false">
			<Description>With this function you can draw either an outline of a rounded rectangle or a filled rounded rectangle where the (x1,y1) position is the top left corner and the (x2,y2) position is the bottom right corner. If the rectangle is filled, then the colour arguments will be used to generate a colour gradient from the centre to the edges, where colour 1 is the centre colour and colour 2 the edge colour. You must also supply radius values for the x and y axis (in pixels) and the corners will be rounded by these amounts. You can define how precise the drawing of the corners is with the function draw_set_circle_precision(). Please note that the rectangle being drawn may need different values (+/-1 on the x, y, or width or height) to be drawn with the desired dimensions due to differences across the various supported platforms.</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the left of the rounded rectangle.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the top of the rounded rectangle.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the right of the rounded rectangle.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the bottom of the rounded rectangle.</Parameter>
			<Parameter Name="xrad" Type="Real" Optional="false">The radius of the curve along the x axis from the rectangle corners.</Parameter>
			<Parameter Name="yrad" Type="Real" Optional="false">The radius of the curve along the y axis from the rectangle corners.</Parameter>
			<Parameter Name="col1" Type="Constant.Color" Optional="false">The center colour.</Parameter>
			<Parameter Name="col2" Type="Constant.Color" Optional="false">The outside edge colour.</Parameter>
			<Parameter Name="outline" Type="Bool" Optional="false">Whether the rectangle is an outline (true) or filled in (false).</Parameter>
		</Function>
		<Function Name="draw_triangle_color" Deprecated="false" ReturnType="Undefined" Locale="US" Pure="false">
			<Description>With this function you can draw either an outline of a triangle or a filled triangle. If it is filled you can define the individual colours for each corner point and if these colours are not the same, you will get a gradient effect from one to the other (the colour settings will over-ride the base colour set with the function draw_set_colour()).</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the triangle&apos;s first corner.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the triangle&apos;s first corner.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the triangle&apos;s second corner.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the triangle&apos;s second corner.</Parameter>
			<Parameter Name="x3" Type="Real" Optional="false">The x coordinate of the triangle&apos;s third corner.</Parameter>
			<Parameter Name="y3" Type="Real" Optional="false">The y coordinate of the triangle&apos;s third corner.</Parameter>
			<Parameter Name="col1" Type="Constant.Color" Optional="false">The colour of the first corner.</Parameter>
			<Parameter Name="col2" Type="Constant.Color" Optional="false">The colour of the second corner.</Parameter>
			<Parameter Name="col3" Type="Constant.Color" Optional="false">The colour of the third corner.</Parameter>
			<Parameter Name="outline" Type="Bool" Optional="false">Whether the triangle is an outline (true) or filled in (false).</Parameter>
		</Function>
		<Function Name="draw_circle_color" Deprecated="false" ReturnType="Undefined" Locale="US" Pure="false">
			<Description>With this function you can draw either an outline of a circle or a filled circle, and if it is filled you can define the interior and exterior fill colours. If these colours are not the same, you will get a gradient effect from one to the other and the colour settings will over-ride the base colour set with the function draw_set_colour(). You can define how precise the drawing is with the function draw_set_circle_precision().</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of the center of the circle.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of the center of the circle.</Parameter>
			<Parameter Name="r" Type="Real" Optional="false">The radius (distance from center to edge) of the circle in pixels.</Parameter>
			<Parameter Name="col1" Type="Constant.Color" Optional="false">The colour at the center of the circle.</Parameter>
			<Parameter Name="col2" Type="Constant.Color" Optional="false">The colour at the edge of the circle.</Parameter>
			<Parameter Name="outline" Type="Bool" Optional="false">Whether the circle is an outline (true) or not (false). If true, col1 is irrelevant.</Parameter>
		</Function>
		<Function Name="draw_ellipse_color" Deprecated="false" ReturnType="Undefined" Locale="US" Pure="false">
			<Description>With this function you can draw either an outline of an ellipse or a filled ellipse by defining a rectangular area that will then have the ellipse created to fit. If it is filled you can define the interior and exterior fill colours. If these colours are not the same, you will get a gradient effect from one to the other (the colour settings will over-ride the base colour set with the function draw_set_colour()). You can define how precise the drawing is with the function draw_set_circle_precision().</Description>
			<Parameter Name="x1" Type="Real" Optional="false">The x coordinate of the left of the ellipse.</Parameter>
			<Parameter Name="y1" Type="Real" Optional="false">The y coordinate of the top of the ellipse.</Parameter>
			<Parameter Name="x2" Type="Real" Optional="false">The x coordinate of the right of the ellipse.</Parameter>
			<Parameter Name="y2" Type="Real" Optional="false">The y coordinate of the bottom of the ellipse.</Parameter>
			<Parameter Name="col1" Type="Constant.Color" Optional="false">The colour of the center.</Parameter>
			<Parameter Name="col2" Type="Constant.Color" Optional="false">The colour of the edge.</Parameter>
			<Parameter Name="outline" Type="Bool" Optional="false">Whether the ellipse is an outline (true) or filled in (false).</Parameter>
		</Function>
		<Function Name="draw_vertex_color" Deprecated="false" ReturnType="Undefined" Locale="US" Pure="false">
			<Description>This function defines the position of a vertex for a primitive, with its own colour and alpha setting. The final look of the primitive will depend on the primitive type chosen to draw and the order with which you add the vertexes to it (see draw_primitive_begin() for more information) and the vertexes with different colours and alphas will blend smoothly from one to the other. To end and draw the primitive you must call draw_primitive_end().</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of the vertex.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of the vertex.</Parameter>
			<Parameter Name="col" Type="Constant.Color" Optional="false">The colour to draw this vertex with.</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha to draw this vertex with (0-1).</Parameter>
		</Function>
		<Function Name="font_cache_glyph" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Parameter Name="font" Type="Asset.GMFont" Optional="false" />
			<Parameter Name="glyphIndex" Type="Real" Optional="false" />
		</Function>
		<Function Name="draw_vertex_texture_color" Deprecated="false" ReturnType="Undefined" Locale="US" Pure="false">
			<Description>This function defines the position of a textured vertex for a primitive. The final look of the primitive will depend on the primitive type chosen to draw (See draw_primitive_begin() for more information), the order with which you add the vertices to it, the position of the start and end points that you give for the texture sample and the colour and alpha values that you have set. To maintain the texture appearance while changing only the alpha, a value of -1 (or c_white) may be used for the colour argument. To end and draw the primitive you must call draw_primitive_end().</Description>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of the vertex.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of the vertex.</Parameter>
			<Parameter Name="xtex" Type="Real" Optional="false">The x coordinate within the texture.</Parameter>
			<Parameter Name="ytex" Type="Real" Optional="false">The y coordinate within the texture.</Parameter>
			<Parameter Name="col" Type="Constant.Color" Optional="false">The colour to blend with the texture at this vertex (-1 or c_white for no blending).</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha to draw this vertex with (0-1).</Parameter>
		</Function>
		<Function Name="display_get_gui_height" Deprecated="false" ReturnType="Real" Pure="true" />
		<Function Name="window_set_color" Deprecated="false" ReturnType="Undefined" Locale="US" Pure="false">
			<Description>This function can set the background colour of the game window. This colour represents that which will be used for those areas of the game window that are not occupied by any views. The following image illustrates this:</Description>
			<Parameter Name="colour" Type="Constant.Color" Optional="false">The colour to set the region.</Parameter>
		</Function>
		<Function Name="window_get_color" Deprecated="false" ReturnType="Constant.Color" Locale="US" Pure="true">
			<Description>This function returns the background colour of the game window. This colour represents that which will be used for those areas of the game window that are not occupied by any views. The following image illustrates this:</Description>
		</Function>
		<Function Name="audio_resume_music" Deprecated="true" ReturnType="Undefined" Pure="false" />
		<Function Name="audio_music_is_playing" Deprecated="true" ReturnType="Bool" Pure="true" />
		<Function Name="audio_pause_music" Deprecated="true" ReturnType="Undefined" Pure="false" />
		<Function Name="audio_play_music" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="soundid" Type="Asset.GMSound" Optional="false" />
			<Parameter Name="loops" Type="Bool" Optional="false" />
		</Function>
		<Function Name="audio_stop_music" Deprecated="true" ReturnType="Undefined" Pure="false" />
		<Function Name="audio_music_gain" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="value" Type="Asset.GMSound" Optional="false" />
			<Parameter Name="time" Type="Real" Optional="false" />
		</Function>
		<Function Name="audio_system" Deprecated="true" ReturnType="Undefined" Pure="true" />
		<Function Name="highscore_clear" Deprecated="false" ReturnType="Undefined" Pure="false" />
		<Function Name="font_get_first" Deprecated="false" ReturnType="Real" Pure="true">
			<Parameter Name="ind" Type="Asset.GMFont" Optional="false" />
		</Function>
		<Function Name="room_set_background_colour" Deprecated="true" ReturnType="Undefined" Locale="GB" Pure="true">
			<Parameter Name="ind" Type="Asset.GMRoom" Optional="false" />
			<Parameter Name="col" Type="Constant.Color" Optional="false" />
			<Parameter Name="show" Type="Bool" Optional="false" />
		</Function>
		<Function Name="room_set_background_color" Deprecated="true" ReturnType="Undefined" Locale="US" Pure="true">
			<Parameter Name="ind" Type="Asset.GMRoom" Optional="false" />
			<Parameter Name="col" Type="Constant.Color" Optional="false" />
			<Parameter Name="show" Type="Bool" Optional="false" />
		</Function>
		<Function Name="part_type_color1" Deprecated="false" ReturnType="Undefined" Locale="US" Pure="false">
			<Description>This function is used to set a particle type to be a single colour for the total duration of the lifetime of each individual particle.</Description>
			<Parameter Name="ind" Type="Id.ParticleType" Optional="false">The index of the particle type to change.</Parameter>
			<Parameter Name="colour1" Type="Constant.Color" Optional="false">The single colour to make the particle type.</Parameter>
		</Function>
		<Function Name="part_type_color2" Deprecated="false" ReturnType="Undefined" Locale="US" Pure="false">
			<Description>This function can be used to set a two colour gradient for each particle created of the given type. The first colour is that which all particles will start with, and the second colour is the one on which the particle will end with, and a smooth gradient change will occur to the colour over the particles lifetime from one colour to the other.</Description>
			<Parameter Name="ind" Type="Id.ParticleType" Optional="false">The index of the particle type to change.</Parameter>
			<Parameter Name="colour1" Type="Constant.Color" Optional="false">The colour the particle will start at.</Parameter>
			<Parameter Name="colour2" Type="Constant.Color" Optional="false">The colour the particle will end at.</Parameter>
		</Function>
		<Function Name="part_type_color3" Deprecated="false" ReturnType="Undefined" Locale="US" Pure="false">
			<Description>This function can be used to set a three colour gradient for each particle created of the given type. The first colour is that which all particles will start with, and the second colour is the one that will be blended to half way through its lifetime and the third colour is the one with which the particle will end with. A smooth gradient change will occur through the colours over the particles lifetime from one colour to the other.</Description>
			<Parameter Name="ind" Type="Id.ParticleType" Optional="false">The index of the particle type to change.</Parameter>
			<Parameter Name="colour1" Type="Constant.Color" Optional="false">The colour the particle will start at.</Parameter>
			<Parameter Name="colour2" Type="Constant.Color" Optional="false">The colour the particle will be halfway through its lifespan.</Parameter>
			<Parameter Name="colour3" Type="Constant.Color" Optional="false">The colour the particle will end at.</Parameter>
		</Function>
		<Function Name="part_type_color_mix" Deprecated="false" ReturnType="Undefined" Locale="US" Pure="false">
			<Description>With this function you can set the given particle type to be a random blend of two colours.</Description>
			<Parameter Name="ind" Type="Id.ParticleType" Optional="false">The index of the particle type to change.</Parameter>
			<Parameter Name="colour1" Type="Constant.Color" Optional="false">The first colour the blend will take from.</Parameter>
			<Parameter Name="colour2" Type="Constant.Color" Optional="false">The second colour the blend will take from.</Parameter>
		</Function>
		<Function Name="part_type_color_rgb" Deprecated="false" ReturnType="Undefined" Locale="US" Pure="false">
			<Description>With this function you can set the mix of red, green and blue colours for all particles created of the given type. You supply a minimum value and a maximum value for each of the three components and the particles created will have a random colour based on the given range of parameters. All values must be between 0 and 255.</Description>
			<Parameter Name="ind" Type="Id.ParticleType" Optional="false">The index of the particle type to change.</Parameter>
			<Parameter Name="rmin" Type="Real" Optional="false">The minimum the final colour&apos;s red component can be.</Parameter>
			<Parameter Name="rmax" Type="Real" Optional="false">The maximum the final colour&apos;s red component can be.</Parameter>
			<Parameter Name="gmin" Type="Real" Optional="false">The minimum the final colour&apos;s green component can be.</Parameter>
			<Parameter Name="gmax" Type="Real" Optional="false">The maximum the final colour&apos;s green component can be.</Parameter>
			<Parameter Name="bmin" Type="Real" Optional="false">The minimum the final colour&apos;s blue component can be.</Parameter>
			<Parameter Name="bmax" Type="Real" Optional="false">The maximum the final colour&apos;s blue component can be.</Parameter>
		</Function>
		<Function Name="part_type_color_hsv" Deprecated="false" ReturnType="Undefined" Locale="US" Pure="false">
			<Description>With this function you can set a hue, saturation and value range for all particles of the given type. You supply a minimum value and a maximum value for each of the three components and the particles created will have a random colour based on the given range of parameters. In this way you can create particles of the same hue but different saturations, or of different hues but the same value (luminosity) etc... All values must be between 0 and 255.</Description>
			<Parameter Name="ind" Type="Id.ParticleType" Optional="false">The index of the particle type to change.</Parameter>
			<Parameter Name="hmin" Type="Real" Optional="false">The minimum the final colour&apos;s hue component can be.</Parameter>
			<Parameter Name="hmax" Type="Real" Optional="false">The maximum the final colour&apos;s hue component can be.</Parameter>
			<Parameter Name="smin" Type="Real" Optional="false">The minimum the final colour&apos;s saturation component can be.</Parameter>
			<Parameter Name="smax" Type="Real" Optional="false">The maximum the final colour&apos;s saturation component can be.</Parameter>
			<Parameter Name="vmin" Type="Real" Optional="false">The minimum the final colour&apos;s value component can be.</Parameter>
			<Parameter Name="vmax" Type="Real" Optional="false">The maximum the final colour&apos;s value component can be.</Parameter>
		</Function>
		<Function Name="part_system_drawit" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Parameter Name="ind" Type="Id.ParticleSystem" Optional="false" />
		</Function>
		<Function Name="part_particles_create_color" Deprecated="false" ReturnType="Undefined" Locale="US" Pure="true">
			<Description>This function is ideal for those effects that do not require any of the functionality offered by particle emitters (for example, to create smoke from a missile, or a simple explosion effect) as it permits you to quickly and easily create particles at any position in the game room. You can also colour the particles &quot;on the fly&quot; as they are created with this function, and this colour will over-ride the predefined colour of the particle, but it does not blend this colour over the particles lifetime. Note that you must have created the particle system and the particle type previously for this function to be used.</Description>
			<Parameter Name="ind" Type="Id.ParticleSystem" Optional="false">The index of the particle system.</Parameter>
			<Parameter Name="x" Type="Real" Optional="false">The x coordinate of where to create the particles.</Parameter>
			<Parameter Name="y" Type="Real" Optional="false">The y coordinate of where to create the particles.</Parameter>
			<Parameter Name="parttype" Type="Id.ParticleType" Optional="false">The index (type) of the particles to be created.</Parameter>
			<Parameter Name="colour" Type="Constant.Color" Optional="false">The colour blending for the particles.</Parameter>
			<Parameter Name="number" Type="Real" Optional="false">The number of particles to create.</Parameter>
		</Function>
		<Function Name="os_request_permission" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Parameter Name="permission" Type="String" Optional="false" Coerce="true"/>
			<Parameter Name="..." Type="ArgumentIdentity" Optional="true">More optional permissions</Parameter>
		</Function>
		<Function Name="display_set_gui_maximise" Deprecated="false" ReturnType="Undefined" Locale="GB" Pure="true">
			<Parameter Name="xscale" Type="Real" Optional="true">The horizontal scaling factor (use -1 to reset to default).</Parameter>
			<Parameter Name="yscale" Type="Real" Optional="true">The vertical scaling factor (use -1 to reset to default).</Parameter>
			<Parameter Name="xoffset" Type="Real" Optional="true">The x offset position for drawing.</Parameter>
			<Parameter Name="yoffset" Type="Real" Optional="true">The y offset position for drawing.</Parameter>
		</Function>
		<Function Name="display_set_gui_maximize" Deprecated="false" ReturnType="Undefined" Locale="US" Pure="true">
			<Parameter Name="xscale" Type="Real" Optional="true">The horizontal scaling factor (use -1 to reset to default).</Parameter>
			<Parameter Name="yscale" Type="Real" Optional="true">The vertical scaling factor (use -1 to reset to default).</Parameter>
			<Parameter Name="xoffset" Type="Real" Optional="true">The x offset position for drawing.</Parameter>
			<Parameter Name="yoffset" Type="Real" Optional="true">The y offset position for drawing.</Parameter>
		</Function>
		<Function Name="gpu_set_colorwriteenable" Deprecated="false" ReturnType="Undefined" Locale="US" Pure="false">
			<Description>With this function you can switch on or off the colour channels and the alpha channel for all further drawing. For example, you can use this function to create alpha-channel only surfaces (switch off the RGB writing before using the surface), or to create special effects while drawing to the screen. The default value for each of the components is true, and can be supplied as either four unique arguments or as a 4 element 1D array with the following elements in it which will be either true (enabled) or false (disabled):</Description>
			<Parameter Name="red" Type="Bool,Array[Bool]" Optional="false">Enable/disable the red channel</Parameter>
			<Parameter Name="green" Type="Bool" Optional="true">Enable/disable the green channel</Parameter>
			<Parameter Name="blue" Type="Bool" Optional="true">Enable/disable the blue channel</Parameter>
			<Parameter Name="alpha" Type="Bool" Optional="true">Enable/disable the alpha channel</Parameter>
		</Function>
		<Function Name="gpu_set_tex_filter" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Parameter Name="linear" Type="Bool" Optional="false" />
		</Function>
		<Function Name="gpu_set_tex_filter_ext" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Parameter Name="sampler_id" Type="Id.Sampler" Optional="false" />
			<Parameter Name="linear" Type="Bool" Optional="false" />
		</Function>
		<Function Name="gpu_set_tex_repeat" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Parameter Name="repeat" Type="Bool" Optional="false" />
		</Function>
		<Function Name="gpu_set_tex_repeat_ext" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Parameter Name="sampler_id" Type="Id.Sampler" Optional="false" />
			<Parameter Name="repeat" Type="Bool" Optional="false" />
		</Function>
		<Function Name="gpu_get_colorwriteenable" Deprecated="false" ReturnType="Array[Bool]" Locale="US" Pure="true">
			<Description>This function can be used to retrieve the current colour write-enable values. The function returns a 4 element 1D array with the following elements in it which will be either true (enabled) or false (disabled). By default all colour writing is set to true:</Description>
		</Function>
		<Function Name="gpu_get_tex_filter" Deprecated="false" ReturnType="Bool" Pure="true" />
		<Function Name="gpu_get_tex_filter_ext" Deprecated="false" ReturnType="Bool" Pure="true">
			<Parameter Name="sampler_id" Type="Id.Sampler" Optional="false" />
		</Function>
		<Function Name="gpu_get_tex_repeat" Deprecated="false" ReturnType="Bool" Pure="true" />
		<Function Name="gpu_get_tex_repeat_ext" Deprecated="false" ReturnType="Bool" Pure="true">
			<Parameter Name="sampler_id" Type="Id.Sampler" Optional="false" />
		</Function>
		<Function Name="achievement_event" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="stringid" Type="String" Optional="false" />
		</Function>
		<Function Name="achievement_show" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="type" Type="Undefined" Optional="false" />
			<Parameter Name="val" Type="Undefined" Optional="false" />
		</Function>
		<Function Name="achievement_get_info" Deprecated="true" ReturnType="Undefined" Pure="true">
			<Parameter Name="userid" Type="Undefined" Optional="false" />
		</Function>
		<Function Name="ads_enable" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="x" Type="Real" Optional="false" />
			<Parameter Name="y" Type="Real" Optional="false" />
			<Parameter Name="num" Type="Real" Optional="false" />
		</Function>
		<Function Name="ads_disable" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="num" Type="Real" Optional="false" />
		</Function>
		<Function Name="ads_setup" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="user_uuid" Type="Real" Optional="false" />
			<Parameter Name="ad_app_key" Type="String" Optional="false" />
		</Function>
		<Function Name="ads_engagement_launch" Deprecated="true" ReturnType="Undefined" Pure="false" />
		<Function Name="ads_engagement_available" Deprecated="true" ReturnType="Undefined" Pure="true" />
		<Function Name="ads_engagement_active" Deprecated="true" ReturnType="Undefined" Pure="true" />
		<Function Name="ads_event" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="stringid" Type="String" Optional="false" />
		</Function>
		<Function Name="ads_event_preload" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="stringid" Type="String" Optional="false" />
		</Function>
		<Function Name="ads_set_reward_callback" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="callback" Type="Asset.Script" Optional="false" />
		</Function>
		<Function Name="ads_get_display_height" Deprecated="true" ReturnType="Real" Pure="true">
			<Parameter Name="slotnum" Type="Real" Optional="false" />
		</Function>
		<Function Name="ads_get_display_width" Deprecated="true" ReturnType="Real" Pure="true">
			<Parameter Name="slotnum" Type="Real" Optional="false" />
		</Function>
		<Function Name="ads_move" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="x" Type="Real" Optional="false" />
			<Parameter Name="y" Type="Real" Optional="false" />
			<Parameter Name="slotnum" Type="Real" Optional="false" />
		</Function>
		<Function Name="ads_interstitial_available" Deprecated="true" ReturnType="Bool" Pure="true" />
		<Function Name="ads_interstitial_display" Deprecated="true" ReturnType="Bool" Pure="false" />
		<Function Name="iap_activate" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="ds_list" Type="Id.DsList" Optional="false" />
		</Function>
		<Function Name="iap_status" Deprecated="true" ReturnType="Bool" Pure="true" />
		<Function Name="iap_enumerate_products" Deprecated="true" ReturnType="Undefined" Pure="true">
			<Parameter Name="ds_list" Type="Id.DsList" Optional="false" />
		</Function>
		<Function Name="iap_restore_all" Deprecated="true" ReturnType="Undefined" Pure="false" />
		<Function Name="iap_acquire" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="product_id" Type="Any" Optional="false" />
			<Parameter Name="payload" Type="Any" Optional="false" />
		</Function>
		<Function Name="iap_consume" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="product_id" Type="Any" Optional="false" />
		</Function>
		<Function Name="iap_product_details" Deprecated="true" ReturnType="Undefined" Pure="true">
			<Parameter Name="product_id" Type="Any" Optional="false" />
			<Parameter Name="ds_map" Type="Id.DsMap" Optional="false" />
		</Function>
		<Function Name="iap_purchase_details" Deprecated="true" ReturnType="Undefined" Pure="true">
			<Parameter Name="purchase_id" Type="Undefined" Optional="false" />
			<Parameter Name="ds_map" Type="Undefined" Optional="false" />
		</Function>
		<Function Name="gamepad_set_color" Deprecated="false" ReturnType="Undefined" Locale="US" Pure="false">
			<Description>This function can be used to set the colour of the LEDs within a PlayStation controller. You specify the device slot to set, and then give a colour, which can be any of the colour constants or a colour value created using the specific colour functions or a HEX value(like $FFFFFFF).</Description>
			<Parameter Name="device" Type="Real" Optional="false">Which gamepad device &quot;slot&quot; to set.</Parameter>
			<Parameter Name="color" Type="Constant.Color" Optional="false">The color to use.</Parameter>
		</Function>
		<Function Name="win8_livetile_tile_notification" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="template" Type="Any" Optional="false" />
			<Parameter Name="ds_map" Type="Any" Optional="false" />
			<Parameter Name="expiry" Type="Any" Optional="false" />
			<Parameter Name="tag" Type="Any" Optional="false" />
		</Function>
		<Function Name="win8_livetile_tile_clear" Deprecated="true" ReturnType="Undefined" Pure="false" />
		<Function Name="win8_livetile_badge_notification" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="id" Type="Any" Optional="false" />
		</Function>
		<Function Name="win8_livetile_badge_clear" Deprecated="true" ReturnType="Undefined" Pure="false" />
		<Function Name="win8_livetile_queue_enable" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="flag" Type="Any" Optional="false" />
		</Function>
		<Function Name="win8_secondarytile_pin" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="id" Type="Any" Optional="false" />
			<Parameter Name="shortName" Type="Any" Optional="false" />
			<Parameter Name="displayName" Type="Any" Optional="false" />
			<Parameter Name="cmdLineArgs" Type="Any" Optional="false" />
			<Parameter Name="dsListOptions" Type="Any" Optional="false" />
			<Parameter Name="tileImg" Type="Any" Optional="false" />
			<Parameter Name="wideTileImg" Type="Any" Optional="false" />
			<Parameter Name="textCol" Type="Any" Optional="false" />
		</Function>
		<Function Name="win8_secondarytile_badge_notification" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="id" Type="Any" Optional="false" />
			<Parameter Name="tileId" Type="Any" Optional="false" />
		</Function>
		<Function Name="win8_secondarytile_delete" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="id" Type="Any" Optional="false" />
		</Function>
		<Function Name="win8_livetile_notification_begin" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="template" Type="Any" Optional="false" />
		</Function>
		<Function Name="win8_livetile_notification_secondary_begin" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="template" Type="Any" Optional="false" />
			<Parameter Name="tileId" Type="Any" Optional="false" />
		</Function>
		<Function Name="win8_livetile_notification_expiry" Deprecated="true" ReturnType="Undefined" Pure="true">
			<Parameter Name="expiryTime" Type="Any" Optional="false" />
		</Function>
		<Function Name="win8_livetile_notification_tag" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="tag" Type="Any" Optional="false" />
		</Function>
		<Function Name="win8_livetile_notification_text_add" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="text" Type="Any" Optional="false" />
		</Function>
		<Function Name="win8_livetile_notification_image_add" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="image" Type="Any" Optional="false" />
		</Function>
		<Function Name="win8_livetile_notification_end" Deprecated="true" ReturnType="Undefined" Pure="false" />
		<Function Name="win8_appbar_enable" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="flag" Type="Any" Optional="false" />
		</Function>
		<Function Name="win8_appbar_add_element" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="type" Type="Any" Optional="false" />
			<Parameter Name="icon" Type="Any" Optional="false" />
			<Parameter Name="label" Type="Any" Optional="false" />
			<Parameter Name="section" Type="Any" Optional="false" />
			<Parameter Name="toolTip" Type="Any" Optional="false" />
			<Parameter Name="callback" Type="Any" Optional="false" />
		</Function>
		<Function Name="win8_appbar_remove_element" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="id" Type="Any" Optional="false" />
		</Function>
		<Function Name="win8_settingscharm_add_entry" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="name" Type="Any" Optional="false" />
			<Parameter Name="callback" Type="Any" Optional="false" />
		</Function>
		<Function Name="win8_settingscharm_add_html_entry" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="id" Type="Any" Optional="false" />
			<Parameter Name="name" Type="Any" Optional="false" />
			<Parameter Name="htmlPath" Type="Any" Optional="false" />
		</Function>
		<Function Name="win8_settingscharm_add_xaml_entry" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="name" Type="Any" Optional="false" />
			<Parameter Name="xamlPath" Type="Any" Optional="false" />
			<Parameter Name="headerRGB" Type="Any" Optional="false" />
			<Parameter Name="callback" Type="Any" Optional="false" />
			<Parameter Name="wideFlyout" Type="Any" Optional="false" />
		</Function>
		<Function Name="win8_settingscharm_set_xaml_property" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="entryName" Type="Any" Optional="false" />
			<Parameter Name="elementName" Type="Any" Optional="false" />
			<Parameter Name="propertyName" Type="Any" Optional="false" />
			<Parameter Name="newValue" Type="Any" Optional="false" />
		</Function>
		<Function Name="win8_settingscharm_get_xaml_property" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="entryName" Type="Any" Optional="false" />
			<Parameter Name="elementName" Type="Any" Optional="false" />
			<Parameter Name="propertyName" Type="Any" Optional="false" />
		</Function>
		<Function Name="win8_settingscharm_remove_entry" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="name" Type="Any" Optional="false" />
		</Function>
		<Function Name="win8_share_image" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="image_filename" Type="Any" Optional="false" />
			<Parameter Name="title" Type="Any" Optional="false" />
			<Parameter Name="description" Type="Any" Optional="false" />
			<Parameter Name="immediate" Type="Any" Optional="false" />
		</Function>
		<Function Name="win8_share_screenshot" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="title" Type="Any" Optional="false" />
			<Parameter Name="description" Type="Any" Optional="false" />
			<Parameter Name="immediate" Type="Any" Optional="false" />
		</Function>
		<Function Name="win8_share_file" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="filename" Type="Any" Optional="false" />
			<Parameter Name="title" Type="Any" Optional="false" />
			<Parameter Name="description" Type="Any" Optional="false" />
			<Parameter Name="immediate" Type="Any" Optional="false" />
		</Function>
		<Function Name="win8_share_url" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="url" Type="Any" Optional="false" />
			<Parameter Name="title" Type="Any" Optional="false" />
			<Parameter Name="description" Type="Any" Optional="false" />
			<Parameter Name="immediate" Type="Any" Optional="false" />
		</Function>
		<Function Name="win8_share_text" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="text" Type="Any" Optional="false" />
			<Parameter Name="title" Type="Any" Optional="false" />
			<Parameter Name="description" Type="Any" Optional="false" />
			<Parameter Name="immediate" Type="Any" Optional="false" />
		</Function>
		<Function Name="win8_search_enable" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="_selectionCallback" Type="Any" Optional="false" />
		</Function>
		<Function Name="win8_search_disable" Deprecated="true" ReturnType="Undefined" Pure="false" />
		<Function Name="win8_search_add_suggestions" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="_dslist" Type="Any" Optional="false" />
		</Function>
		<Function Name="win8_device_touchscreen_available" Deprecated="true" ReturnType="Undefined" Pure="true" />
		<Function Name="win8_license_initialize_sandbox" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="_licenseString" Type="Any" Optional="false" />
		</Function>
		<Function Name="win8_license_trial_version" Deprecated="true" ReturnType="Undefined" Pure="true" />
		<Function Name="uwp_livetile_tile_clear" Deprecated="true" ReturnType="Undefined" Pure="false" />
		<Function Name="uwp_livetile_badge_notification" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="id" Type="Any" Optional="false" />
		</Function>
		<Function Name="uwp_livetile_badge_clear" Deprecated="true" ReturnType="Undefined" Pure="false" />
		<Function Name="uwp_livetile_queue_enable" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="flag" Type="Any" Optional="true" />
		</Function>
		<Function Name="uwp_secondarytile_pin" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="tileId" Type="Any" Optional="false" />
			<Parameter Name="displayName" Type="Any" Optional="false" />
			<Parameter Name="cmdLineArgs" Type="Any" Optional="false" />
			<Parameter Name="tileImage" Type="Any" Optional="false" />
			<Parameter Name="wideTileImage" Type="Any" Optional="false" />
			<Parameter Name="largeTileImage" Type="Any" Optional="false" />
			<Parameter Name="textCol" Type="Any" Optional="false" />
			<Parameter Name="tileSize" Type="Any" Optional="false" />
		</Function>
		<Function Name="uwp_secondarytile_badge_notification" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="id" Type="Any" Optional="false" />
			<Parameter Name="tileId" Type="Any" Optional="false" />
		</Function>
		<Function Name="uwp_secondarytile_delete" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="tileId" Type="Any" Optional="false" />
		</Function>
		<Function Name="uwp_secondarytile_badge_clear" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="tileId" Type="Any" Optional="false" />
		</Function>
		<Function Name="uwp_secondarytile_tile_clear" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="tileId" Type="Any" Optional="false" />
		</Function>
		<Function Name="uwp_livetile_notification_begin" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="template" Type="Any" Optional="false" />
		</Function>
		<Function Name="uwp_livetile_notification_secondary_begin" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="template" Type="Any" Optional="false" />
			<Parameter Name="tileId" Type="Any" Optional="false" />
		</Function>
		<Function Name="uwp_livetile_notification_expiry" Deprecated="true" ReturnType="Undefined" Pure="true">
			<Parameter Name="expiryTime" Type="Any" Optional="false" />
		</Function>
		<Function Name="uwp_livetile_notification_tag" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="tag" Type="Any" Optional="false" />
		</Function>
		<Function Name="uwp_livetile_notification_text_add" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="text" Type="Any" Optional="false" />
		</Function>
		<Function Name="uwp_livetile_notification_image_add" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="image" Type="Any" Optional="false" />
		</Function>
		<Function Name="uwp_livetile_notification_end" Deprecated="true" ReturnType="Undefined" Pure="false" />
		<Function Name="uwp_livetile_notification_template_add" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Parameter Name="template" Type="Any" Optional="false" />
		</Function>
		<Function Name="uwp_appbar_enable" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="flag" Type="Any" Optional="false" />
		</Function>
		<Function Name="uwp_appbar_add_element" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="id" Type="Any" Optional="false" />
			<Parameter Name="type" Type="Any" Optional="false" />
			<Parameter Name="icon" Type="Any" Optional="false" />
			<Parameter Name="label" Type="Any" Optional="false" />
			<Parameter Name="section" Type="Any" Optional="false" />
			<Parameter Name="toolTip" Type="Any" Optional="false" />
			<Parameter Name="callback" Type="Any" Optional="false" />
		</Function>
		<Function Name="uwp_appbar_remove_element" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="id" Type="Any" Optional="false" />
		</Function>
		<Function Name="uwp_device_touchscreen_available" Deprecated="true" ReturnType="Undefined" Pure="true" />
		<Function Name="winphone_license_trial_version" Deprecated="true" ReturnType="Undefined" Pure="true" />
		<Function Name="winphone_tile_title" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="title" Type="Any" Optional="false" />
		</Function>
		<Function Name="winphone_tile_count" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="count" Type="Any" Optional="false" />
		</Function>
		<Function Name="winphone_tile_back_title" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="title" Type="Any" Optional="false" />
		</Function>
		<Function Name="winphone_tile_back_content" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="content" Type="Any" Optional="false" />
		</Function>
		<Function Name="winphone_tile_back_content_wide" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="content" Type="Any" Optional="false" />
		</Function>
		<Function Name="winphone_tile_front_image" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="included_filename" Type="Any" Optional="false" />
		</Function>
		<Function Name="winphone_tile_front_image_small" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="included_filename" Type="Any" Optional="false" />
		</Function>
		<Function Name="winphone_tile_front_image_wide" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="included_filename" Type="Any" Optional="false" />
		</Function>
		<Function Name="winphone_tile_back_image" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="included_filename" Type="Any" Optional="false" />
		</Function>
		<Function Name="winphone_tile_back_image_wide" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="included_filename" Type="Any" Optional="false" />
		</Function>
		<Function Name="winphone_tile_background_colour" Deprecated="true" ReturnType="Undefined" Locale="GB" Pure="true">
			<Parameter Name="colour" Type="Any" Optional="false" />
		</Function>
		<Function Name="winphone_tile_background_color" Deprecated="true" ReturnType="Undefined" Locale="US" Pure="true">
			<Parameter Name="color" Type="Any" Optional="false" />
		</Function>
		<Function Name="winphone_tile_icon_image" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="included_filename" Type="Any" Optional="false" />
		</Function>
		<Function Name="winphone_tile_small_icon_image" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="included_filename" Type="Any" Optional="false" />
		</Function>
		<Function Name="winphone_tile_wide_content" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="content" Type="Any" Optional="false" />
			<Parameter Name="index" Type="Any" Optional="false" />
		</Function>
		<Function Name="winphone_tile_cycle_images" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="included_filename_1" Type="Any" Optional="true" />
			<Parameter Name="included_filename_2" Type="Any" Optional="true" />
		</Function>
		<Function Name="winphone_tile_small_background_image" Deprecated="true" ReturnType="Undefined" Pure="true">
			<Parameter Name="included_filename" Type="Any" Optional="false" />
		</Function>
		<Function Name="physics_get_friction" Deprecated="false" ReturnType="Real" Pure="true">
			<Parameter Name="fixture" Type="Id.PhysicsIndex" Optional="false" />
		</Function>
		<Function Name="physics_particle_group_get_mass" Deprecated="false" ReturnType="Real" Pure="true">
			<Parameter Name="group" Type="Id.PhysicsParticleGroup" Optional="false" />
		</Function>
		<Function Name="shader_reset" Deprecated="false" ReturnType="Undefined" Pure="false" />
		<Function Name="shader_set_uniform_i_array" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Parameter Name="uniform_id" Type="Id.Uniform" Optional="false">The handle of the shader constant to set.</Parameter>
			<Parameter Name="array" Type="Array[Real]" Optional="false">A previously initialised array of integer values.</Parameter>
		</Function>
		<Function Name="vertex_format_add_color" Deprecated="false" ReturnType="Undefined" Locale="US" Pure="false">
			<Description>Tell GameMaker to accept colour data as part of the new vertex format being created.</Description>
		</Function>
		<Function Name="vertex_format_add_textcoord" Deprecated="true" ReturnType="Undefined" Pure="true" />
		<Function Name="vertex_color" Deprecated="false" ReturnType="Undefined" Locale="US" Pure="false">
			<Description>If your defined vertex format takes a colour value you can use this function to add that data to the vertex being defined for the current primitive. The function needs a buffer to store the data in and will take either a colour constant, or a hex value (using the standard GameMaker format of BGR, eg: $FF0000 for blue) as well as an alpha value from 0 (transparent) to 1 (fully opaque).</Description>
			<Parameter Name="buffer" Type="Id.VertexBuffer" Optional="false">The buffer to write the information to.</Parameter>
			<Parameter Name="color" Type="Constant.Color" Optional="false">The colour for this vertex (can be a constant or a hex value).</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha value for the vertex (from 0 to 1).</Parameter>
		</Function>
		<Function Name="push_get_application_badge_number" Deprecated="true" ReturnType="Undefined" Pure="true" />
		<Function Name="push_set_application_badge_number" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="num" Type="Any" Optional="false" />
		</Function>
		<Function Name="skeleton_attachment_create_color" Deprecated="false" ReturnType="Undefined" Locale="US" Pure="true">
			<Description>When you create you skeletal animation sprite, you can assign attachment slots and attachments to go in them. These are simply images (sprites) that are separate from the animation but when attached will move along with the bone they are attached to. Normally you would assign these attachments in your animation program (Spine), but with this function you can create your own at run-time using a sprite asset from your game. the function requires that you give the attachment a name (as a string) and then set the sprite_index and image_index to use, as well as the x and y origin (which can be different to that defined by the sprite in the sprite properties), and you can also set any transforms that you wish to be applied to the image when attached, as well as the colour to be blended with the image and it&apos;s alpha (transparency) value. If the attachment was successfully created the function will return 1 and if it was not (you supplied an invalid sprite index, or the base sprite is not a Spine sprite) then it will return -1.</Description>
			<Parameter Name="name" Type="String" Optional="false">The name (as a string) of the attachment to create.</Parameter>
			<Parameter Name="sprite" Type="Asset.GMSprite" Optional="false">The sprite_index to get the attachment image from.</Parameter>
			<Parameter Name="ind" Type="Real" Optional="false">The image_index to get the attachment image from.</Parameter>
			<Parameter Name="xorigin" Type="Real" Optional="false">The x origin for the image being used.</Parameter>
			<Parameter Name="yorigin" Type="Real" Optional="false">The y origin for the image being used.</Parameter>
			<Parameter Name="xscale" Type="Real" Optional="false">The horizontal scaling of the image, as a multiplier: 1 = normal scaling, 0.5 is half etc...</Parameter>
			<Parameter Name="yscale" Type="Real" Optional="false">The vertical scaling of the image, as a multiplier: 1 = normal scaling, 0.5 is half etc...</Parameter>
			<Parameter Name="rot" Type="Real" Optional="false">The rotation of the image: 0 = normal, 90 = turned 90° counter-clockwise etc.</Parameter>
			<Parameter Name="colour" Type="Constant.Color" Optional="false">The colour value to use (A constant, integer or hex value).</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha value to use (from 0 to 1).</Parameter>
		</Function>
		<Function Name="skeleton_slot_color_set" Deprecated="false" ReturnType="Undefined" Locale="US" Pure="false">
			<Description>With this function you can set an attachment slot colour and alpha so all sprites attached to it will be drawn with these blend values. Keep in mind that the instance sprite can have a blend colour and alpha setting (image_blend and image_alpha), as can the attachment (see the function skeleton_attachment_create_colour()), and so the final colour and alpha that the assigned attachment sprite for the slot will have will be a composite of all these values.</Description>
			<Parameter Name="slot" Type="String" Optional="false">The slot name to set, a string</Parameter>
			<Parameter Name="colour" Type="Constant.Color" Optional="false">The colour to set, either an integer, a constant, or a hex value.</Parameter>
			<Parameter Name="alpha" Type="Real" Optional="false">The alpha to set from 0 to 1.</Parameter>
		</Function>
		<Function Name="skeleton_slot_color_get" Deprecated="false" ReturnType="Undefined" Locale="US" Pure="true">
			<Description>With this function you can get an attachment slot colour. You supply the slot name (a string) and the function will return an integer value for the colour.</Description>
			<Parameter Name="slot" Type="String" Optional="false">The slot name to check, a string</Parameter>
		</Function>
		<Function Name="skeleton_animation_get_event_frames" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Parameter Name="anim_name" Type="String" Optional="false" />
			<Parameter Name="event_name" Type="String" Optional="false" />
		</Function>
		<Function Name="draw_enable_skeleton_blendmodes" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Parameter Name="enable" Type="Bool" Optional="false" />
		</Function>
		<Function Name="draw_get_enable_skeleton_blendmodes" Deprecated="false" ReturnType="Bool" Pure="true" />
		<Function Name="layer_get_forced_depth" Deprecated="false" ReturnType="Bool" Pure="true" />
		<Function Name="layer_background_change" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Parameter Name="background_element_id" Type="Id.BackgroundElement" Optional="false" />
			<Parameter Name="sprite" Type="Asset.GMSprite" Optional="false" />
		</Function>
		<Function Name="layer_tile_exists" Deprecated="true" ReturnType="Bool" Pure="true">
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false" />
			<Parameter Name="tile_element_id" Type="Id.TileMapElement" Optional="false" />
		</Function>
		<Function Name="layer_tile_create" Deprecated="true" ReturnType="Id.TileElementId" Pure="true">
			<Parameter Name="layer_id" Type="String,Id.Layer" Optional="false" />
			<Parameter Name="x" Type="Real" Optional="false" />
			<Parameter Name="y" Type="Real" Optional="false" />
			<Parameter Name="tileset" Type="Asset.GMTileSet" Optional="false" />
			<Parameter Name="left" Type="Real" Optional="false" />
			<Parameter Name="top" Type="Real" Optional="false" />
			<Parameter Name="width" Type="Real" Optional="false" />
			<Parameter Name="height" Type="Real" Optional="false" />
		</Function>
		<Function Name="layer_tile_destroy" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="tile_element_id" Type="Id.TileElementId" Optional="false" />
		</Function>
		<Function Name="layer_tile_change" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="tile_element_id" Type="Id.TileElementId" Optional="false" />
			<Parameter Name="sprite" Type="Asset.GMSprite" Optional="false" />
		</Function>
		<Function Name="layer_tile_xscale" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="tile_element_id" Type="Id.TileElementId" Optional="false" />
			<Parameter Name="scale" Type="Real" Optional="false" />
		</Function>
		<Function Name="layer_tile_yscale" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="tile_element_id" Type="Id.TileElementId" Optional="false" />
			<Parameter Name="scale" Type="Real" Optional="false" />
		</Function>
		<Function Name="layer_tile_blend" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="tile_element_id" Type="Id.TileElementId" Optional="false" />
			<Parameter Name="col" Type="Constant.Color" Optional="false" />
		</Function>
		<Function Name="layer_tile_alpha" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="tile_element_id" Type="Id.TileElementId" Optional="false" />
			<Parameter Name="alpha" Type="Real" Optional="false" />
		</Function>
		<Function Name="layer_tile_x" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="tile_element_id" Type="Id.TileElementId" Optional="false" />
			<Parameter Name="x" Type="Real" Optional="false" />
		</Function>
		<Function Name="layer_tile_y" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="tile_element_id" Type="Id.TileElementId" Optional="false" />
			<Parameter Name="y" Type="Real" Optional="false" />
		</Function>
		<Function Name="layer_tile_region" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="tile_element_id" Type="Id.TileElementId" Optional="false" />
			<Parameter Name="left" Type="Real" Optional="false" />
			<Parameter Name="top" Type="Real" Optional="false" />
			<Parameter Name="width" Type="Real" Optional="false" />
			<Parameter Name="height" Type="Real" Optional="false" />
		</Function>
		<Function Name="layer_tile_visible" Deprecated="true" ReturnType="Undefined" Pure="false">
			<Parameter Name="tile_element_id" Type="Id.TileElementId" Optional="false" />
			<Parameter Name="visible" Type="Bool" Optional="false" />
		</Function>
		<Function Name="layer_tile_get_sprite" Deprecated="true" ReturnType="Asset.GMSprite" Pure="true">
			<Parameter Name="tile_element_id" Type="Id.TileElementId" Optional="false" />
		</Function>
		<Function Name="layer_tile_get_xscale" Deprecated="true" ReturnType="Real" Pure="true">
			<Parameter Name="tile_element_id" Type="Id.TileElementId" Optional="false" />
		</Function>
		<Function Name="layer_tile_get_yscale" Deprecated="true" ReturnType="Real" Pure="true">
			<Parameter Name="tile_element_id" Type="Id.TileElementId" Optional="false" />
		</Function>
		<Function Name="layer_tile_get_blend" Deprecated="true" ReturnType="Constant.Color" Pure="true">
			<Parameter Name="tile_element_id" Type="Id.TileElementId" Optional="false" />
		</Function>
		<Function Name="layer_tile_get_alpha" Deprecated="true" ReturnType="Real" Pure="true">
			<Parameter Name="tile_element_id" Type="Id.TileElementId" Optional="false" />
		</Function>
		<Function Name="layer_tile_get_x" Deprecated="true" ReturnType="Real" Pure="true">
			<Parameter Name="tile_element_id" Type="Id.TileElementId" Optional="false" />
		</Function>
		<Function Name="layer_tile_get_y" Deprecated="true" ReturnType="Real" Pure="true">
			<Parameter Name="tile_element_id" Type="Id.TileElementId" Optional="false" />
		</Function>
		<Function Name="layer_tile_get_region" Deprecated="true" ReturnType="Array[Real]" Pure="true">
			<Parameter Name="tile_element_id" Type="Id.TileElementId" Optional="false" />
		</Function>
		<Function Name="layer_tile_get_visible" Deprecated="true" ReturnType="Bool" Pure="true">
			<Parameter Name="tile_element_id" Type="Id.TileElementId" Optional="false" />
		</Function>
		<Function Name="gesture_get_rotate_angle" Deprecated="false" ReturnType="Real" Pure="true" />
		<Function Name="asset_has_any_tag" Deprecated="false" ReturnType="Bool" Pure="true">
			<Parameter Name="asset_name_or_id" Type="Any" Optional="false" />
			<Parameter Name="tags" Type="String,Array[String]" Optional="false" />
			<Parameter Name="asset_type" Type="Constant.AssetType" Optional="true" />
		</Function>
		<Function Name="extension_get_option_count" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns the number of options a given extension has.</Description>
			<Parameter Name="ext_name" Type="String" Optional="false" />
		</Function>
		<Function Name="extension_get_option_names" Deprecated="false" ReturnType="Array.String" Pure="true">
			<Description>This function returns an array with all the extension options that this extension exposes.</Description>
			<Parameter Name="ext_name" Type="String" Optional="false" />
		</Function>
		<Function Name="extension_get_option_value" Deprecated="false" ReturnType="Mixed" Pure="true">
			<Description>This function returns value for a given extension option.</Description>
			<Parameter Name="ext_name" Type="String" Optional="false" />
			<Parameter Name="option_name" Type="String" Optional="false" />
		</Function>
		<Function Name="extension_get_options" Deprecated="false" ReturnType="Struct" Pure="true">
			<Description>This function returns a struct of key-value pairs with information on each extension option and it's value.</Description>
			<Parameter Name="ext_name" Type="String" Optional="false" />
		</Function>
		<Function Name="extension_exists" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>This function returns whether or not an extension with a given name exists.</Description>
			<Parameter Name="ext_name" Type="String" Optional="false" />
		</Function>
		<Function Name="extension_get_version" Deprecated="false" ReturnType="String" Pure="true">
			<Description>This function returns the version of a given extension in string format.</Description>
			<Parameter Name="ext_name" Type="String" Optional="false" />
		</Function>
		<Function Name="animcurve_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Parameter Name="curve_struct_or_id" Type="Any" Optional="false" />
		</Function>
		<Function Name="weak_ref_alive" Deprecated="false" ReturnType="Bool" Pure="true">
			<Parameter Name="weak_ref" Type="Struct.WeakRef" Optional="false" />
		</Function>
		<Function Name="fx_create" Deprecated="false" ReturnType="Struct.Fx" Pure="false">
			<Description>This function is used to create a new FX Struct for a given effect type, which contains information on the effect and the values for its parameters.</Description>
			<Parameter Name="filter_or_effect_name" Type="String" Optional="false">The name of the filter/effect to create (as a string).</Parameter>
		</Function>
		<Function Name="fx_get_name" Deprecated="false" ReturnType="String" Pure="false">
			<Description>This function is used to retrieve the name of a filter/effect from its struct.</Description>
			<Parameter Name="filter_or_effect_name" Type="Struct.Fx" Optional="false">The FX struct to get the name of</Parameter>
		</Function>
		<Function Name="fx_get_parameter_names" Deprecated="false" ReturnType="Array[String]" Pure="false">
			<Description>This function is used to retrieve the name of a filter/effect from its struct.</Description>
			<Parameter Name="filter_or_effect_name" Type="Struct.Fx" Optional="false">The FX struct to get the parameter names of</Parameter>
		</Function>
		<Function Name="fx_get_parameter" Deprecated="false" ReturnType="Any" Pure="false">
			<Description>This function is used to retrieve the value of a parameter from an FX Struct.</Description>
			<Parameter Name="filter_or_effect_name" Type="Struct.Fx" Optional="false">The FX struct to get the parameter from</Parameter>
			<Parameter Name="parameter_name" Type="String" Optional="false">The FX struct to get the parameter from</Parameter>
		</Function>
		<Function Name="fx_get_parameters" Deprecated="false" ReturnType="Struct" Pure="false">
			<Description>This function is used to retrieve a struct containing all the parameters for the given FX struct.</Description>
			<Parameter Name="filter_or_effect_name" Type="Struct.Fx" Optional="false">The FX struct to get the parameter from</Parameter>
		</Function>
		<Function Name="fx_get_single_layer" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>Returns if the filter or effect is forced on a single layer.</Description>
			<Parameter Name="filter_or_effect_name" Type="Struct.Fx" Optional="false">The FX struct to get the parameter from</Parameter>
		</Function>
		<Function Name="fx_set_parameter" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function is used to change the value of a parameter in the given FX struct. You specify an FX struct (as returned from fx_create() or layer_get_fx()), a parameter name as a string, and its new value.</Description>
			<Parameter Name="filter_or_effect_name" Type="Struct.Fx" Optional="false">The FX struct to modify</Parameter>
			<Parameter Name="parameter_name" Type="String" Optional="false">The name of the parameter to change the value of (as a string)</Parameter>
			<Parameter Name="val" Type="Real,Array" Optional="false">The new value(s) for that parameter as a real or array</Parameter>
		</Function>
		<Function Name="fx_set_parameters" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function is used to change the parameters of a filter/effect. You specify an FX struct (as returned from fx_create() or layer_get_fx()) and a struct containing its parameters (as returned from fx_get_parameters()).</Description>
			<Parameter Name="filter_or_effect_name" Type="Struct.Fx" Optional="false">The FX struct to modify</Parameter>
			<Parameter Name="parameter_struct" Type="Struct" Optional="false">A struct containing the parameters for the filter/effect</Parameter>
		</Function>
		<Function Name="fx_set_single_layer" Deprecated="false" ReturnType="Undefined" Pure="true">
			<Description>This function is used to force a filter or effect onto a single layer.</Description>
			<Parameter Name="filter_or_effect_name" Type="Struct.Fx" Optional="false">The FX struct to modify</Parameter>
			<Parameter Name="enable" Type="Bool" Optional="false">Flag for if the filter or effect should be forced on a single layer.</Parameter>
		</Function>
		<Function Name="layer_set_fx" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function is used to assign an FX struct to a Room Layer.</Description>
			<Parameter Name="layer_name_or_id" Type="String,Id.Layer" Optional="false">The name or ID of the layer to modify</Parameter>
			<Parameter Name="filter_or_effect_name" Type="Struct.Fx" Optional="false">The FX struct to modify</Parameter>
		</Function>
		<Function Name="layer_get_fx" Deprecated="false" ReturnType="Struct.Fx" Pure="false">
			<Description>This function is used to retrieve the FX struct for a layer.</Description>
			<Parameter Name="layer_name_or_id" Type="String,Id.Layer" Optional="false">The name or ID of the layer to modify</Parameter>
		</Function>
		<Function Name="layer_clear_fx" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function is used to clear the FX struct that is applied to the specified layer.</Description>
			<Parameter Name="layer_name_or_id" Type="String,Id.Layer" Optional="false">The name or ID of the layer to modify</Parameter>
		</Function>
		<Function Name="layer_enable_fx" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>This function is used to enable FX for a specified layer.</Description>
			<Parameter Name="layer_name_or_id" Type="String,Id.Layer" Optional="false">The name or ID of the layer to modify</Parameter>
			<Parameter Name="enable" Type="Bool" Optional="false">Enabled</Parameter>
		</Function>
		<Function Name="layer_fx_is_enabled" Deprecated="false" ReturnType="Bool" Pure="false">
			<Description>This function is used to check if FX is enabled for a specified layer.</Description>
			<Parameter Name="layer_name_or_id" Type="String,Id.Layer" Optional="false">The name or ID of the layer to modify</Parameter>
		</Function>
		<Function Name="rollback_define_player" Deprecated="false" ReturnType="Undefined" Pure="false" FeatureFlag="rollback">
			<Description>This function defines the object to use for players in rollback multiplayer.</Description>
			<Parameter Name="player_object" Type="Asset.GMObject" Optional="false">The object type that should be used for players</Parameter>
			<Parameter Name="layer_name" Type="String" Optional="true">The layer name to assign the created instance to (default is "Instances")</Parameter>
		</Function>
		<Function Name="rollback_define_input" Deprecated="false" ReturnType="Undefined" Pure="false" FeatureFlag="rollback">
			<Description>This function defines the input to be used by the rollback system.</Description>
			<Parameter Name="input_struct" Type="Struct" Optional="false">Struct containing the keycodes to track</Parameter>
		</Function>
		<Function Name="rollback_define_mock_input" Deprecated="false" ReturnType="Undefined" Pure="false" FeatureFlag="rollback">
			<Description>This function defines the mocked input to be used by the rollback system during sync test.</Description>
			<Parameter Name="player_id" Type="Real" Optional="false">The player id to set the mock input for</Parameter>
			<Parameter Name="input_struct" Type="Struct" Optional="false">Struct containing the keycodes to mock</Parameter>
		</Function>
		<Function Name="rollback_define_input_frame_delay" Deprecated="false" ReturnType="Undefined" Pure="false" FeatureFlag="rollback">
			<Description>This function sets a fixed local input frame delay.</Description>
			<Parameter Name="delay" Type="Real" Optional="false">Number of frames to use for local input frame delay</Parameter>
		</Function>
		<Function Name="rollback_define_extra_network_latency" Deprecated="false" ReturnType="Undefined" Pure="false" FeatureFlag="rollback">
			<Description>This function sets an extra latency to be added to all sent and received network messages. This can be used to simulate worse network conditions for the local player.</Description>
			<Parameter Name="latency" Type="Real" Optional="false">Number of ms of latency to add</Parameter>
		</Function>
		<Function Name="rollback_use_manual_start" Deprecated="false" ReturnType="Undefined" Pure="false" FeatureFlag="rollback">
			<Description>This function enables manual start, meaning that the game will not automatically start once everyone is connected and instead wait for rollback_start_game to be called.</Description>
		</Function>
		<Function Name="rollback_create_game" Deprecated="false" ReturnType="Undefined" Pure="false" FeatureFlag="rollback">
			<Description>This function connects to GXC and creates a game instance of the specified size. The user needs to be signed in to GXC.</Description>
			<Parameter Name="num_players" Type="Real" Optional="false">The number of players to request space for</Parameter>
			<Parameter Name="sync_test" Type="Bool" Optional="true">Flag to enable sync test for development (optional, default is true)</Parameter>
			<Parameter Name="region" Type="String" Optional="true">Name of a region to connect to</Parameter>
		</Function>
		<Function Name="rollback_join_game" Deprecated="false" ReturnType="Bool" Pure="false" FeatureFlag="rollback">
			<Description>This function checks if the game was started via an invite to a GXC game and if so joins it.</Description>
			<Parameter Name="dry_run" Type="Bool" Optional="true">Flag to only check if you should join without actually doing it</Parameter>
		</Function>
		<Function Name="rollback_start_game" Deprecated="false" ReturnType="Undefined" Pure="false" FeatureFlag="rollback">
			<Description>This function starts the current game.</Description>
		</Function>
		<Function Name="rollback_leave_game" Deprecated="false" ReturnType="Undefined" Pure="false" FeatureFlag="rollback">
			<Description>This function leaves the current game.</Description>
		</Function>
		<Function Name="rollback_get_input" Deprecated="false" ReturnType="Struct" Pure="false" FeatureFlag="rollback">
			<Description>This function returns a struct containing fields w,a,s,d,z,x,c,space,up,left,down,right and the corresponding last_? fields for last frames input.</Description>
			<Parameter Name="player_id" Type="Real" Optional="true">The player id to get the input for</Parameter>
		</Function>
		<Function Name="rollback_chat" Deprecated="false" ReturnType="Undefined" Pure="false" FeatureFlag="rollback">
			<Description>This function sends a chat message.</Description>
			<Parameter Name="message" Type="String" Optional="false">The content of the message (maximum of 128 bytes allowed).</Parameter>
			<Parameter Name="to" Type="Real" Optional="true">The player which the message is sent to. If left unspecified the message will be sent to everyone in the game.</Parameter>
		</Function>
		<Function Name="rollback_use_player_prefs" Deprecated="false" ReturnType="Undefined" Pure="false" FeatureFlag="rollback">
			<Description>This function is used to enable player preferences and needs to be called before joining or creating a rollback game. When using this feature the game won't autostart and instead require rollback_start_game to be called after all players have set their preferences.</Description>
			<Parameter Name="default" Type="Any" Optional="true">Default player preferences</Parameter>
		</Function>
		<Function Name="rollback_set_player_prefs" Deprecated="false" ReturnType="Undefined" Pure="false" FeatureFlag="rollback">
			<Description>This function is used to update the local player preferences. Preferences can only be set after joining or creating a game, but before starting the game.</Description>
			<Parameter Name="default" Type="Any" Optional="false">Player preferences</Parameter>
		</Function>
		<Function Name="rollback_get_player_prefs" Deprecated="false" ReturnType="Any" Pure="false" FeatureFlag="rollback">
			<Description>This function is used to get the preferences for a given player. Undefined will be returned if no preferences have been set. If the player id argument is not given, the preferences for the local player will be returned.</Description>
			<Parameter Name="player id" Type="Real" Optional="true">Player id</Parameter>
		</Function>
		<Function Name="rollback_get_info" Deprecated="false" ReturnType="Struct" Pure="false" FeatureFlag="rollback">
			<Description>This function returns a struct containing player_name and avatar_url for the player.</Description>
			<Parameter Name="player_id" Type="Real" Optional="true">The player id to get the info for</Parameter>
		</Function>
		<Function Name="rollback_use_random_input" Deprecated="false" ReturnType="Undefined" Pure="false" FeatureFlag="rollback">
			<Description>This function switches random input for other players in sync test.</Description>
			<Parameter Name="enabled" Type="Bool" Optional="false">Flag to enable random input for other players in sync test</Parameter>
		</Function>
		<Function Name="rollback_display_events" Deprecated="false" ReturnType="Undefined" Pure="false" FeatureFlag="rollback">
			<Description>This function sets if the default display of rollback events should be used or not. Default value is true.</Description>
			<Parameter Name="enabled" Type="Bool" Optional="false">Flag to enable default display of events</Parameter>
		</Function>
		<Function Name="rollback_sync_on_frame" Deprecated="false" ReturnType="Bool" Pure="false" FeatureFlag="rollback">
			<Description>Synchronize the rollback game on the current frame. This means that we will only proceed past the current frame if all inputs are confirmed. Returns true if successful, false if the current frame will be rerun.</Description>
		</Function>
		<Function Name="wallpaper_set_config" Deprecated="false" ReturnType="Undefined" Pure="false" FeatureFlag="rollback">
			<Parameter Name="default" Type="Any" Optional="false">Config</Parameter>
			<Description>Set config for live wallpaper</Description>
		</Function>
		<Function Name="time_source_create" Deprecated="false" ReturnType="Id.TimeSource" Pure="true">
			<Description>Creates a new time source, returning its index.</Description>
			<Parameter Name="parent" Type="Id.TimeSource,Constant.TimeSource" Optional="false">The parent of the time source</Parameter>
			<Parameter Name="period" Type="Real" Optional="false">The period of the time source</Parameter>
			<Parameter Name="units" Type="Constant.TimeSourceUnits" Optional="false">The units that the period is measured in</Parameter>
			<Parameter Name="callback" Type="Function" Optional="false">The callback to be invoked when the time source expires</Parameter>
			<Parameter Name="args" Type="Array" Optional="true">The arguments to be passed to the callback</Parameter>
			<Parameter Name="reps" Type="Real" Optional="true">The number of repetitions the time source should perform</Parameter>
			<Parameter Name="expiry_type" Type="Constant.TimeSourceExpiryType" Optional="true">The expiry type of the time source</Parameter>
		</Function>
		<Function Name="time_source_destroy" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Destroys the time source, as long as it has no children.</Description>
			<Parameter Name="id" Type="Id.TimeSource,Constant.TimeSource" Optional="false">The index of the time source</Parameter>
			<Parameter Name="destroy_tree" Type="Bool" Optional="true">Whether to destroy all of the children of the time source too</Parameter>
		</Function>
		<Function Name="time_source_start" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Starts/Resumes the time source and all of its children.</Description>
			<Parameter Name="id" Type="Id.TimeSource,Constant.TimeSource" Optional="false">The index of the time source</Parameter>
		</Function>
		<Function Name="time_source_stop" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Stops the time source and all of its children.</Description>
			<Parameter Name="id" Type="Id.TimeSource" Optional="false">The index of the time source</Parameter>
		</Function>
		<Function Name="time_source_pause" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Pauses the time source and all of its children.</Description>
			<Parameter Name="id" Type="Id.TimeSource,Constant.TimeSource" Optional="false">The index of the time source</Parameter>
		</Function>
		<Function Name="time_source_resume" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Resumes a time source and all of its children.</Description>
			<Parameter Name="id" Type="Id.TimeSource,Constant.TimeSource" Optional="false">The index of the time source</Parameter>
		</Function>
		<Function Name="time_source_reset" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Resets the time source and all of its children.</Description>
			<Parameter Name="id" Type="Id.TimeSource" Optional="false">The index of the time source</Parameter>
		</Function>
		<Function Name="time_source_reconfigure" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Resets and reconfigures the time source. Additionally resets all of the time source's children. </Description>
			<Parameter Name="id" Type="Id.TimeSource" Optional="false">The index of the time source</Parameter>
			<Parameter Name="period" Type="Real" Optional="true">The period of the time source</Parameter>
			<Parameter Name="units" Type="Constant.TimeSourceUnits" Optional="true">The units that the period is measured in</Parameter>
			<Parameter Name="callback" Type="Function" Optional="true">The callback to be invoked when the time source expires</Parameter>
			<Parameter Name="args" Type="Array" Optional="true">The arguments to be passed to the callback</Parameter>
			<Parameter Name="reps" Type="Real" Optional="true">The number of repetitions the time source should perform</Parameter>
			<Parameter Name="expiry_type" Type="Constant.TimeSourceExpiryType" Optional="true">The expiry type of the time source</Parameter>
		</Function>
		<Function Name="time_source_get_period" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Returns the period of the time source, measured in its own units.</Description>
			<Parameter Name="id" Type="Id.TimeSource" Optional="false">The index of the time source</Parameter>
		</Function>
		<Function Name="time_source_get_reps_completed" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Returns the number of repetitions the time source has completed so far.</Description>
			<Parameter Name="id" Type="Id.TimeSource" Optional="false">The index of the time source</Parameter>
		</Function>
		<Function Name="time_source_get_reps_remaining" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Returns the number of repetitions the time source has left to complete.</Description>
			<Parameter Name="id" Type="Id.TimeSource" Optional="false">The index of the time source</Parameter>
		</Function>
		<Function Name="time_source_get_units" Deprecated="false" ReturnType="Constant.TimeSourceUnits" Pure="true">
			<Description>Returns the units that the time source is measuring in.</Description>
			<Parameter Name="id" Type="Id.TimeSource" Optional="false">The index of the time source</Parameter>
		</Function>
		<Function Name="time_source_get_time_remaining" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Returns the time left before the next expiry of the time source, measured in its own units.</Description>
			<Parameter Name="id" Type="Id.TimeSource" Optional="false">The index of the time source</Parameter>
		</Function>
		<Function Name="time_source_get_state" Deprecated="false" ReturnType="Constant.TimeSourceState" Pure="true">
			<Description>Returns the current active state of the time source.</Description>
			<Parameter Name="id" Type="Id.TimeSource,Constant.TimeSource" Optional="false">The index of the time source</Parameter>
		</Function>
		<Function Name="time_source_get_parent" Deprecated="false" ReturnType="Id.TimeSource" Pure="true">
			<Description>Returns the index of the parent of this time source.</Description>
			<Parameter Name="id" Type="Id.TimeSource" Optional="false">The index of the time source</Parameter>
		</Function>
		<Function Name="time_source_get_children" Deprecated="false" ReturnType="Array[Id.TimeSource]" Pure="true">
			<Description>Returns an array containing all of the indexes of the children of this time source.</Description>
			<Parameter Name="id" Type="Id.TimeSource,Constant.TimeSource" Optional="false">The index of the time source</Parameter>
		</Function>
		<Function Name="time_source_exists" Deprecated="false" ReturnType="Bool" Pure="true">
			<Description>Returns true if the given index corresponds to an existing time source.</Description>
			<Parameter Name="id" Type="Id.TimeSource,Constant.TimeSource" Optional="false">The index of the time source</Parameter>
		</Function>
		<Function Name="time_seconds_to_bpm" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Converts a period in seconds to its equivalent frequency in beats-per-minute.</Description>
			<Parameter Name="seconds" Type="Real" Optional="false">The value to be converted</Parameter>
		</Function>
		<Function Name="time_bpm_to_seconds" Deprecated="false" ReturnType="Real" Pure="true">
			<Description>Converts a frequency in beats-per-minute to its equivalent period in seconds.</Description>
			<Parameter Name="bpm" Type="Real" Optional="false">The value to be converted</Parameter>
		</Function>
		<Function Name="call_later" Deprecated="false" ReturnType="Id.TimeSource" Pure="true">
			<Description>Invokes a callback after the specified time. Returns a handle which can be used to cancel the call.</Description>
			<Parameter Name="period" Type="Real" Optional="false">How long to wait before invoking the callback</Parameter>
			<Parameter Name="units" Type="Constant.TimeSourceUnits" Optional="false">The units that the period is measured in</Parameter>
			<Parameter Name="callback" Type="Function" Optional="false">The callback to be invoked</Parameter>
			<Parameter Name="repeat" Type="Bool" Optional="true">Whether this should repeat indefinitely</Parameter>
		</Function>
		<Function Name="call_cancel" Deprecated="false" ReturnType="Undefined" Pure="false">
			<Description>Cancels a delayed call set up by call_later.</Description>
			<Parameter Name="handle" Type="Id.TimeSource" Optional="false">The handle of the call to cancel</Parameter>
		</Function>
	</Functions>
	<Variables>
		<Variable Name="font_texture_page_size" Type="Real" Deprecated="false" Get="true" Set="true" Instance="false">This built-in variable can be used to either get or set the texture page size when using the function font_add(). On adding a font using that function, GameMaker will create a texture page cache of the required glyphs up to the size defined by this variable. The process is as follows:</Variable>
		<Variable Name="instance_count" Type="Real" Deprecated="false" Get="true" Set="false" Instance="false">With this read only variable you can get a count of all active instances that are in the room. This will include the instance running the code, but does not include those instances that have been deactivated using the instance deactivate functions. Note that this variable will only give you the number of instances at the start of the step, so any changes to the instances in the room made after the step has started will not be taken into consideration.</Variable>
		<Variable Name="instance_id" Type="Array[Id.Instance]" Deprecated="false" Get="true" Set="false" Instance="false">This read only array holds all the ids of every active instance within the room. This means that if you have used any of the Instance Deactivate functions those instances that have been deactivated will not be included in this array (if you have used a value from this array previously, it will now return the keyword noone).</Variable>
		<Variable Name="alarm" Type="Array[Real]" Deprecated="false" Get="true" Set="true" Instance="true">This 1 dimension array is used to get the current value for any alarms that the instance may have, or it can be used to set those alarms. There are twelve alarms built into each instance of an object, and each one has its own event that will run when this variable reaches 0.</Variable>
		<Variable Name="depth" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">When you create an object you can assign it an initial depth which defines how the instances of that object will be drawn in the room when the game is being played and this variable can be used to get and to change that depth value while the game is running. You would normally not need to use this variable as you should be setting instances to be added to discreet layers, which in turn are set to a specific depth, but it may be that you want to change the depth of an instance using this value, in which case a &quot;temporary layer&quot; will be created specifically for the instance at the given depth. Note that when no instances are on the same depth then this temporary layer will be removed from memory (unlike regular layers which will remain even if they have nothing on them).</Variable>
		<Variable Name="direction" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">All instances in GameMaker have certain &quot;built in&quot; properties that you can use and set to govern how they look and behave. Direction is one of those properties and can be used to set the direction of movement of the instance when the instance has a speed other than 0. Note that directions in GameMaker are usually calculated as 0° being right, 90° being up, 180° being left and 270° being down, and that the gravity and gravity_direction variables can modify the direction value when they are used in your games.</Variable>
		<Variable Name="friction" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">Friction is one of the &quot;built in&quot; properties that instances can have and can be used to slow the instance down over time when the speed is other than zero. It works simply by subtracting an amount from the speed every step until the object has a speed of 0, so if the friction is set to, for example, 0.1 and the speed of the instance is 1 (1 pixel per step), it will slow down and stop after 10 steps have passed. Note too that the friction is applied to positive and negative speeds equally with the net result always being that the object has a speed of 0 after a given time.</Variable>
		<Variable Name="gravity" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">gravity is one of the &quot;built in&quot; variables all instances have and, when set, will apply a constant force in the gravity_direction of the instance, influencing both the instance speed and direction. Note that gravity is a cumulative force and will accelerate the object if you choose not to cap the final speed, and it&apos;s usual that you&apos;d set this variable to small decimal values like 0.01. If you set the gravity to 0, then no gravity will be applied to the instance (this is the default value).</Variable>
		<Variable Name="gravity_direction" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">gravity_direction is one of the &quot;built in&quot; properties all instances have and can be used to set the direction of movement when the instances gravity is greater than 0. Note that directions in GameMaker are usually calculated as 0° being right, 90° being up, 180° being left and 270° being down.</Variable>
		<Variable Name="hspeed" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">hspeed is one of the &quot;built in&quot; properties that all instances have and defines the horizontal movement speed (along the x-axis) of the instance in pixels per step. So, an hspeed of 3 means 3 pixels of movement to the right (+x) every step, and an hspeed of -3 would mean 3 pixels of movement to the left (-x) every step.</Variable>
		<Variable Name="id" Type="Id.Instance" Deprecated="false" Get="true" Set="false" Instance="true">This read-only variable holds the unique identifying number for the instance. Every instance that you create - whether through code or by adding them to a room in the Room Editor - is given a number that is used internally to identify this instance and the variable id is what you can use to reference it. The id is also returned (and can be stored in a variable) when an instance is created using instance_create_layer() or instance_create_depth(), as well as other instance functions.</Variable>
		<Variable Name="layer" Type="Id.Layer" Deprecated="false" Get="true" Set="true" Instance="true">This built-in variable is created for every instance in a room and contains the layer ID value of the layer that the instance is assigned to. This value can then be used in other functions like layer_get_depth() or it can be changed to move the instance to another layer, but note that if the layer being assigned does not exist in the current room, then you will get an error that will force your game to close. When assigning a layer, you must supply the unique layer ID as returned by the function layer_get_id() (when using named room layers), or as returned by the function layer_create() (when you create your own layers at run time).</Variable>
		<Variable Name="persistent" Type="Bool" Deprecated="false" Get="true" Set="true" Instance="true">This variable can be read to find out if the instance is flagged as persistent or not, or it can used to set persistence to true (persistent) or false (not persistent) for the instance. A persistent instance is one that will be &quot;carried over&quot; from room to room, meaning (for example) that it only has to be created once at the start of the game and it will be present in all further rooms. Care should be taken with persistence as it is easy to lose track of persistent instances which can lead to problems later in the development of the game.</Variable>
		<Variable Name="solid" Type="Bool" Deprecated="false" Get="true" Set="true" Instance="true">An instance can be flagged as solid through the object properties in the Object Editor, or by changing the value of this built-in variable. If solid is set to true then, when a collision is detected, the colliding instance is returned automatically to the position it was at in the step previous to the collision (and then any code or actions are run in the collision event). If it is set to false, all positioning must be dealt with through the collision event.</Variable>
		<Variable Name="speed" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">All instances in GameMaker have certain &quot;built in&quot; properties that you can use and set to govern how they look and behave. speed is one of those properties and defines how many pixels the instance will move every step. Unlike hspeed and vspeed, speed has no direction associated with it as this is governed by the direction value of the instance, but it can have a negative value, in which case the instance will travel in the opposite direction to that set by the direction function (ie: direction - 180°). Note that setting the speed and/or the direction, will also modify the values of the hspeed and vspeed variables, and that gravity, gravity_direction and friction can all modify the value of this variable when they are used in your games.</Variable>
		<Variable Name="visible" Type="Bool" Deprecated="false" Get="true" Set="true" Instance="false">An instance can be flagged as visible or not by setting this variable to true (visible) or false (invisible). This works by telling GameMaker to skip the draw event for this instance, so care must be taken when using this as it means that no code placed in the draw event will be run while the instance is not visible. Also note that if the layer that the instance is assigned to is flagged as invisible, setting this variable to true will have no effect until the layer itself is flagged as visible too.</Variable>
        <Variable Name="managed" Type="Bool" Deprecated="false" Get="true" Set="false" Instance="false" FeatureFlag="rollback">This read-only variable indicates whether the object is managed by the rollback multiplayer system or not.</Variable>
        <Variable Name="vspeed" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">vspeed is one of the &quot;built in&quot; properties that all instances have and defines the vertical movement speed (along the y-axis) of the instance in pixels per step. So, a vspeed of 3 means 3 pixels of movement to the bottom (+y) every step, and a vspeed of -3 would mean 3 pixels of movement to the top (-y) every step.</Variable>
		<Variable Name="x" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">The x value of an instance is the horizontal position in the current room, measured in pixels. This value can be either 0, positive or minus, where 0 is the left hand side of the room and moving right increases x, moving left decreases x (a negative value for x means that the instance has gone outside the left side of the room). You can even give x a real value like 12.345, but as you cannot get .345 of a pixel, the instance may not appear to have moved, although these values will be maintained and used internally by GameMaker and are perfectly valid.</Variable>
		<Variable Name="xprevious" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">This built-in variable returns the previous x position for the instance. This variable will be set just before the start of the begin step event but it can also be set through code at any time, meaning you can give it your own custom value should that be necessary.</Variable>
		<Variable Name="xstart" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">This variable stores the initial x position of the instance when it is first created in the room. This is not a read-only variable and can be set as well as read.</Variable>
		<Variable Name="y" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">The y value of an instance is the vertical position in the current room, measured in pixels. This value can be either 0, positive or minus, where 0 is the top of the room and moving down increases y, moving up decreases y (a negative value for y means that the instance has gone outside the top of the room). You can even give y a real value like 12.345, but as you cannot get .345 of a pixel, the instance may not appear to have moved, although these values will be maintained and used internally by GameMaker and are perfectly valid.</Variable>
		<Variable Name="yprevious" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">This built-in variable returns the previous y position for the instance. This variable will be set to the current x position just before the start of the begin step event but it can also be set through code at any time, meaning you can give it your own custom value should that be necessary.</Variable>
		<Variable Name="ystart" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">This variable stores the initial y position of the instance when it is first created in the room. This is not a read-only variable and can be set as well as read.</Variable>
		<Variable Name="object_index" Type="Asset.GMObject" Deprecated="false" Get="true" Set="false" Instance="true">This read only variable returns the index of the object that the instance has been created from. This is not the same as the object name, which is a string and can be found using object_get_name(), as this function returns the index number, which is a unique value that GameMaker assigns to every object at the time of creation.</Variable>
		<Variable Name="event_number" Type="Constant.EventNumber" Deprecated="false" Get="true" Set="false" Instance="true">This read-only variable returns the number of the event currently being called, where the number is actually referring to the &quot;sub event&quot; of the event, ie: for the step event the event number could be any one of the constants ev_step_normal, ev_step_begin, or ev_step_end. For a full list of constants that are available for the specific sub-events see event_perform(), and if you should need to know the main event itself, you should be checking the event_type.</Variable>
		<Variable Name="event_object" Type="Asset.GMObject" Deprecated="false" Get="true" Set="false" Instance="true">This read-only variable returns object index of the instance which is running the event being checked.</Variable>
		<Variable Name="event_type" Type="Constant.EventType" Deprecated="false" Get="true" Set="false" Instance="true">This read-only variable returns the type of event currently being executed, which can be one of the following constants:</Variable>
		<Variable Name="path_endaction" Type="Constant.PathAction" Deprecated="false" Get="true" Set="true" Instance="true">This variable can be used to get or to change the reaction of an instance when it reaches the end of the current path. Normally you would set this when you start the path using path_start() but you may wish to change this behaviour depending on any number of events in your game. The available values are expressed using the following constants:</Variable>
		<Variable Name="path_index" Type="Asset.GMPath" Deprecated="false" Get="true" Set="false" Instance="false">All resources in GameMaker have a unique identifying number, and the path_index is a read-only variable that holds the index value for a given path resource that has been assigned to an instance using the path_start() function. If the instance has no path assigned, the variable will be set to -1.</Variable>
		<Variable Name="path_orientation" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">This variable holds the current orientation of the path that has been assigned to the instance when the function path_start() was called. When a path is created, its orientation is the default 0 degrees, but you can set this value to anything you wish using this. Remember that in GameMaker (unless you are using physics) the angles are calculated counter-clockwise, so setting the path orientation to 90° would rotate the path to the left.</Variable>
		<Variable Name="path_position" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">This function can be used to get or to set the position of an instance along a path. The value is normalised from 0 - 1, so if you set it to, for example, 0.5, the instance will be moved to exactly the middle of the path.</Variable>
		<Variable Name="path_positionprevious" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">This variable can be used to get or to set the position of an instance along its current path in the previous step, and is a normalised value between 0 and 1 ie: 0 is the start position of the path and 1 would be the end position. It is similar to the xprevious and yprevious variables in how it works, only it is specific for paths. It can be useful for things like temporarily stopping a path follower if something is in the way (see the example code below).</Variable>
		<Variable Name="path_scale" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">This value can be used to get or to set the scale of the currently assigned path for the instance (as set by the function path_start()) with a default value of 1. This is a scalar value, so 1 is a scale of 1:1, while setting it to 2, for example, will be double the scale and setting it to 0.5 would be halving the scale.</Variable>
		<Variable Name="path_speed" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">You can use this function to get or to set the speed of a path after it has been started using the function path_start(). You can use negative values to signify that the instance should follow the path in reverse.</Variable>
		<Variable Name="room" Type="Asset.GMRoom" Deprecated="false" Get="true" Set="true" Instance="false">This variable holds the room index for the current room that your game is running. This is not a read only variable, however changing this will not change the index value for the current room, but rather change the room to match the index that you have set the variable to. Care should be taken when doing this as if the index you change the variable to is not valid the game will throw an error and close. In general it is much better practice to use room_goto() to change rooms.</Variable>
		<Variable Name="room_first" Type="Asset.GMRoom" Deprecated="false" Get="true" Set="false" Instance="false">This read only variable returns the index of the very first room in the game (this is defined by the order in which the rooms appear in the Room Manager and not by the order in which they were created).</Variable>
		<Variable Name="room_height" Type="Real" Deprecated="false" Get="true" Set="true" Instance="false">This variable holds the height of the current room in pixels. You can change this variable to change the height of the room at any time, and changes will be applied to the bottom of the room, as the origin is considered to be the top left corner. So, for example, if the room is 480px in height and you set it to 640px, the room will be expanded downwards with an extra 180px added to the bottom.</Variable>
		<Variable Name="room_last" Type="Asset.GMRoom" Deprecated="false" Get="true" Set="false" Instance="false">This read only variable returns the index of the very last room in the game (this is defined by the order in which the rooms appear in the Room Manager and not by the order in which they were created). Note that this variable will not recognise or take into consideration rooms that have been added dynamically using room_add() or room_duplicate().</Variable>
		<Variable Name="room_persistent" Type="Bool" Deprecated="false" Get="true" Set="true" Instance="false">This variable can be used to get and to set the persistent flag for the current room. If set to true the room is considered persistent, in which case each time you leave the room and come back again the state of the instances within that room will have been maintained. However if it is flagged as false, each time you return to the room it will be reset to its initial state. You should note that a persistent room uses considerably more memory than a normal room and it is not recommended to have too many of them in your game.</Variable>
		<Variable Name="room_width" Type="Real" Deprecated="false" Get="true" Set="true" Instance="false">This variable holds the width of the current room in pixels. You can change this variable to change the width of the room at any time.</Variable>
		<Variable Name="in_sequence" Type="Bool" Deprecated="false" Get="true" Set="true" Instance="true">This is a built-in variable that is part of the instance variables created for every object instance in your game. If the instance is being controlled by a sequence, this variable will return true, otherwise it will return false. This is a read-only variable and cannot be changed.</Variable>
		<Variable Name="sequence_instance" Type="Struct.SequenceInstance" Deprecated="false" Get="true" Set="false" Instance="true">This is a built-in variable that is part of the instance variables created for every object instance in your game. If the instance is being controlled by a sequence, this variable will hold the sequence instance struct for the Sequence controlling the instance, otherwise it will be undefined. This is a read-only variable and cannot be changed.</Variable>
		<Variable Name="drawn_by_sequence" Type="Bool" Deprecated="false" Get="true" Set="true" Instance="true">This is a built-in variable that is part of the instance variables created for every object instance in your game. This can be changed at any time but will only affect behaviour when the instance is being controlled by a sequence. In this case if this variable is set to true then the sequence will handle the drawing order of the instance, otherwise normal instance drawing will occur.</Variable>
		<Variable Name="bbox_bottom" Type="Real" Deprecated="false" Get="true" Set="false" Instance="true">This read only variable returns the y position (within the room) of the bottom of the bounding box for the instance, where the bounding box is defined by the maximum width and height of the mask for the instance (as set by the sprite_index or by the mask_index). Even when a sprite has a precise collision mask, the bounding box exists and is used for certain things, and so you can use this variable to find it. Please note that when the instance has no sprite assigned the value returned will be the same as the instance Y position.</Variable>
		<Variable Name="bbox_left" Type="Real" Deprecated="false" Get="true" Set="false" Instance="true">This read only variable returns the position (along the x-axis) within the room of the left hand bounding box for the instance, where the bounding box is defined by the maximum width and height of the mask for the instance (as set by the sprite_index or by the mask_index). Even when a sprite has a precise collision mask, the bounding box exists and is used for certain things, and so you can use this variable to find it. Please note that when the instance has no sprite assigned the value returned will be the same as the instance X position.</Variable>
		<Variable Name="bbox_right" Type="Real" Deprecated="false" Get="true" Set="false" Instance="true">This read only variable returns the position within the room (along the x-axis) of the right hand side of the bounding box for the instance, where the bounding box is defined by the maximum width and height of the mask for the instance (as set by the sprite_index or by the mask_index). Even when a sprite has a precise collision mask, the bounding box exists and is used for certain things, and so you can use this variable to find it. Please note that when the instance has no sprite assigned the value returned will be the same as the instance X position.</Variable>
		<Variable Name="bbox_top" Type="Real" Deprecated="false" Get="true" Set="false" Instance="true">This read only variable returns the position within the room (along the y-axis) of the top of the bounding box for the instance, where the bounding box is defined by the maximum width and height of the mask for the instance (as set by the sprite_index or by the mask_index). Even when a sprite has a precise collision mask, the bounding box exists and is used for certain things, and so you can use this variable to find it. Please note that when the instance has no sprite assigned the value returned will be the same as the instance Y position.</Variable>
		<Variable Name="image_alpha" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">This variable is used to get or to set the alpha value for the sprite. Alpha is always calculated as a value between 0 and 1 where 0 is completely transparent and 1 is completely opaque. Please note that for changes in this variable to be visible, the instance should have either no draw event (and so GameMaker will default draw the sprite) or be drawn using one of the extended drawing functions like draw_self() or draw_sprite_ext().</Variable>
		<Variable Name="image_angle" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">This value sets the angle (rotation) of the sprite and is measured in degrees, with the right being 0º, up being 90º, left being 180º and down being 270º. Set this variable to 0 to reset the sprite to be drawn as was defined in the sprite editor. Please note that for changes in this variable to be visible, the instance should have either no draw event (and so GameMaker will default draw the sprite) or be drawn using one of the extended drawing functions like draw_self() or draw_sprite_ext().</Variable>
		<Variable Name="image_blend" Type="Constant.Color" Deprecated="false" Get="true" Set="true" Instance="true">This variable controls the &quot;tinting&quot; of the instance sprite and the default value is -1 (but can also be c_white). Any other value (including internal colour constants like c_red, or c_aqua) will blend the specified colour with the original sprite. Please note that for changes in this variable to be visible, the instance should have either no draw event (and so GameMaker will default draw the sprite) or be drawn using one of the extended drawing functions like draw_self() or draw_sprite_ext().</Variable>
		<Variable Name="image_index" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">A sprite is made up of one or more sub-images which can make the sprite appear animated as they switch from one to the other, or can they can be switched between in code to give different &quot;states&quot;, much like a button has in windows. If the sprite is animated, then you can get the current frame of the animation by checking the image_index variable, or if you want to change the state of a static sprite, you can select a new sub-image by setting this variable to the desired sub-image of the sprite. Please note that for changes in this variable to be visible, the instance should have either no draw event (and so GameMaker will default draw the sprite) or be drawn using one of the drawing functions like draw_self() or draw_sprite_ext() (by supplying the image_index into the appropriate argument).</Variable>
		<Variable Name="image_number" Type="Real" Deprecated="false" Get="true" Set="false" Instance="true">This read only variable can be used to get the number of sub-images in a sprite that has been assigned to an instance (if you need the number of sub-images for a sprite other than the one assigned to the instance you should use sprite_get_number()). Please note that when there is (for example) 1 sub-image this variable will return &quot;1&quot; but the image_index of that sub-image is 0.</Variable>
		<Variable Name="image_speed" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">This variable determines the speed in which GameMaker will cycle through the sub-images for the current instance sprite. The speed value given is a multiplier, with 1 being the default value, and setting it to 0.5 will half the animation speed - as set in the Sprite Editor or Image Editor- while setting it to 2 will double it. If the sprite used has no sub-images, this variable will have no effect.</Variable>
		<Variable Name="image_xscale" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">This value sets the horizontal scaling applied to the sprite that has been assigned to the current instance. A scale of 1 indicates no scaling (1:1), smaller values will scale down (0.5, for example, will half the width of the sprite), larger values will scale up and negative values will flip the sprite and scale it unless the value used is exactly -1 (in which case the sprite is just flipped about its origin with no scaling).</Variable>
		<Variable Name="image_yscale" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">This value sets the vertical scaling (along the y-axis) applied to the sprite that has been assigned to the current instance. A scale of 1 indicates no scaling (1:1), smaller values will scale down (0.5, for example, will half the height of the sprite), larger values will scale up and negative values will mirror the sprite and scale it unless the value used is exactly -1 (in which case the sprite is just mirrored along the y-axis with no scaling).</Variable>
		<Variable Name="mask_index" Type="Asset.GMSprite" Deprecated="false" Get="true" Set="true" Instance="true">When you define an object in GameMaker you can assign it a mask to be used for collisions rather than the one that corresponds to the defined sprite. This variable can be used to find the sprite_index of that mask (or it will return -1 if no sprite has been assigned) or to set the mask for an instance to the chosen sprite. Setting the mask index means that you can have, for example, a sprite for the instance with an irregular shape, yet give it a circular collision mask that is gotten from a different sprite.</Variable>
		<Variable Name="sprite_height" Type="Real" Deprecated="false" Get="true" Set="false" Instance="true">This read only variable returns the height of the sprite that has been assigned to the instance. This height is returned in pixels and will be dependent on the image_yscale. If you need the un-scaled height you should use sprite_get_height().</Variable>
		<Variable Name="sprite_index" Type="Asset.GMSprite" Deprecated="false" Get="true" Set="true" Instance="true">This variable returns the index of the current sprite for the instance, or -1 if the instance has no sprite associated with it. You can change it to give the instance a different sprite by giving it the name of a sprite from the resource tree or by using a variable that has an externally loaded sprite indexed in it. Changing the sprite does not change the index of the currently visible frame, so if you change the sprite on frame number 3, the new sprite will be drawn with that frame visible (assuming it has the same number of frames).</Variable>
		<Variable Name="sprite_width" Type="Real" Deprecated="false" Get="true" Set="false" Instance="true">This read only variable returns the width of the sprite that has been assigned to the instance. This width is returned in pixels and will be dependent on the image_xscale. If you need the un-scaled width you should use sprite_get_width().</Variable>
		<Variable Name="sprite_xoffset" Type="Real" Deprecated="false" Get="true" Set="false" Instance="true">This read only variable returns the local xoffset (the x component of the origin as defined in the sprite editor) of the sprite that has been assigned to the instance. This xoffset is returned in pixels and will be dependent on the image_xscale, so that (for example) if a square 32x32 sprite is defined as having the x origin at 16, when that sprite is scaled by 2 this variable will return 32. If you need the un-scaled xoffset you should use sprite_get_xoffset().</Variable>
		<Variable Name="sprite_yoffset" Type="Real" Deprecated="false" Get="true" Set="false" Instance="true">This read only variable returns the local yoffset (the y component of the origin as defined in the sprite editor) of the sprite that has been assigned to the instance. This yoffset is returned in pixels and will be dependent on the image_yscale, so that (for example) if a square 32x32 sprite is defined as having the y origin at 16, when that sprite is scaled by 2 this variable will return 32. If you need the un-scaled yoffset you should use sprite_get_yoffset().</Variable>
		<Variable Name="timeline_index" Type="Asset.GMTimeline" Deprecated="false" Get="true" Set="true" Instance="true">This variable holds the index of the time line currently associated with the instance. You can set this to a particular time line to use that one, or set it to -1 to stop using a time line for the instance (if no time line is defined for the instance, -1 is returned too). Note that this does not start the time line - for that use the variable timeline_running.</Variable>
		<Variable Name="timeline_loop" Type="Bool" Deprecated="false" Get="true" Set="true" Instance="true">This variable will return whether the time line is looping (true) or not (false). You can change this variable to switch looping on or off and it works with a negative time line speed (if the time line position goes below 0 it will start again at the last defined moment).</Variable>
		<Variable Name="timeline_position" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">This variable holds the current position (moment) a time line is currently at. You can change this value to skip parts of the time line, or to repeat parts or to start the time line again from the beginning.</Variable>
		<Variable Name="timeline_running" Type="Bool" Deprecated="false" Get="true" Set="true" Instance="true">This variable holds current state of the assigned time line and will return true if it is running and false if it is not. You can also set this variable to either true or false to start and stop the time line at any time. it should be noted that a stopped time line is not reset, and so starting it again at a later time will start it from the exact moment that it was stopped at.</Variable>
		<Variable Name="timeline_speed" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">Normally, in each step the position in the time line is increased by 1, however you can change this amount by setting this variable to a different value. You can use real numbers (like 0.5, or 2.4 for example) and if the value is larger than one, several moments can happen within the same time step (they will all be performed in the same order as defined for the time line, so no actions will be skipped).</Variable>
		<Variable Name="view_camera" Type="Array[Id.Camera]" Deprecated="false" Get="true" Set="true" Instance="false">This array holds the unique camera ID assigned to the given view port, and can be set to a new camera or read to get the current camera, returning -1 if no camera is assigned. You can have up to 8 view ports active in a room (array values 0 through 7), and can assign a camera to any of them by simply setting this variable to the camera ID value (as returned by the functions camera_create() or camera_create_view()). If you have set the camera to a view port through the Room Editor, this variable will hold the camera ID for that port.</Variable>
		<Variable Name="view_current" Type="Real" Deprecated="false" Get="true" Set="false" Instance="false">This read only variable is only valid in the Draw Event and returns the current view port being rendered. The return value will change during the draw event when you have various views as the draw event is called once for each view port in succession. So when (for example) you are using view port[0] and view port[1] in your game room, the draw event for ALL instances will be run twice, once for each port, and with this variable you can check to see what view is currently being drawn. In general, this is used to only render specific details to a single port when multiple view ports are visible in the room at the same time. See the example code below.</Variable>
		<Variable Name="view_enabled" Type="Bool" Deprecated="false" Get="true" Set="true" Instance="false">This variable controls whether any view ports that are visible within the room are enabled or not. If you have view ports set to visible and then disable this option, the whole room will be drawn to the screen scaled to the window size instead of the different cameras being drawn through the view ports.</Variable>
		<Variable Name="view_hport" Type="Array[Real]" Deprecated="false" Get="true" Set="true" Instance="false">This variable can be used to get or to set the height of the specified view port. The height of the view port (or combined view ports if more than one are active) define the height of the game window or background canvas at the start of the game, so changing this value after the game has started will have no visible effect on the game window size unless called along with the function window_set_size(). If you have a larger or smaller port size than that assigned to the camera, then the camera view will be scaled down - or up - to fit, as illustrated by the image below.</Variable>
		<Variable Name="view_surface_id" Type="Array[Id.Surface]" Deprecated="false" Get="true" Set="true" Instance="false">With this variable you can set the contents of a given view port to draw to a surface, or get the current surface id if one has been assigned to a view port. When working with surfaces, it is often required that you capture the whole visible region of the screen to the surface, and so you would assign it to a view port using this variable. This means that everything that is shown in the chosen view will now be drawn to the assigned surface. The view will now not be drawn to the screen, meaning that you will need to either:</Variable>
		<Variable Name="view_visible" Type="Array[Bool]" Deprecated="false" Get="true" Set="true" Instance="false">This variable can be used to find out if a particular view port is currently visible or not. You can also set this variable to effectively turn &quot;on&quot; or &quot;off&quot; a view by setting the value to true (visible) or false (invisible). Note that even if you have a view port set to visible, if view ports are not enabled (using the built-in variable view_enabled or enabling them in the Room Editor) then they will not be drawn to the screen.</Variable>
		<Variable Name="view_wport" Type="Array[Real]" Deprecated="true" Get="true" Set="true" Instance="false">This variable can be used to get or to set the width of the specified view port. The width of the view port (or combined view ports if more than one are active) define the width of the game window or background canvas at the start of the game, so changing this value after the game has started will have no visible effect on the game window size unless called along with the function window_set_size(). If you have a larger or smaller port size than that assigned to the camera, then the camera view will be scaled down - or up - to fit, as illustrated by the image below.</Variable>
		<Variable Name="view_xport" Type="Array[Real]" Deprecated="true" Get="true" Set="true" Instance="false">With this built in array you can get or set the x position of the given view port. The view port is the area on the screen where the view is drawn, and you can have up to 8 active at any one time (the array is values from 0 to 7 inclusive to give 8 ports). Now, the default for GameMaker is that the game window (or background canvas) is the same size as the room, however when you activate view ports and cameras, this behaviour changes and the total size of the bounding box for all view ports is used. So, if you have two different view ports at two different positions, the total area that they cover defines the size of the game window. The following image illustrates this:</Variable>
		<Variable Name="view_yport" Type="Array[Real]" Deprecated="true" Get="true" Set="true" Instance="false">With this built in array you can get or set the y position of the given view port. The view port is the area on the screen where the view is drawn, and you can have up to 8 active at any one time (the array is values from 0 to 7 inclusive to give 8 ports). Now, the default for GameMaker is that the game window (or background canvas) is the same size as the room, however when you activate view ports and cameras, this behaviour changes and the total size of the bounding box for all view ports is used. So, if you have two different view ports at two different positions, the total area that they cover defines the size of the game window. The following image illustrates this:</Variable>
		<Variable Name="debug_mode" Type="Bool" Deprecated="true" Get="true" Set="false" Instance="false">This read only variable returns true when the game is being played in debug mode and false when being played as normal.</Variable>
		<Variable Name="fps" Type="Real" Deprecated="false" Get="true" Set="false" Instance="false">In GameMaker there are two main ways that can be used to tell the speed at which your game runs. The game speed (as specified in the Game Options) and the fps (frames per second). These values are often confused, but basically one is the number of game steps that GameMaker is supposed to be completing in a second, while the other (the fps) is the number of CPU steps that GameMaker is actually completing in a second up to a maximum value of the room speed itself. To get the true fps, ie. the actual number of cpu steps per game step, use the fps_real variable.</Variable>
		<Variable Name="fps_real" Type="Real" Deprecated="false" Get="true" Set="false" Instance="false">In GameMaker there are two main ways that can be used to tell the speed at which your game runs. The game speed (as specified in the Game Options) and the fps (frames per second). These values are often confused, but basically one is the number of game steps that GameMaker is supposed to be completing in a second (game speed), while the other is the number of CPU steps that GameMaker is actually completing in a second (the real fps), and this value is generally much higher than the game speed, but will drop as your game gets more complex and uses more processing power to maintain the set room speed.</Variable>
		<Variable Name="application_surface" Type="Id.Surface" Deprecated="false" Get="true" Set="false" Instance="false">This global scope, built-in variable can be used to access the application surface using any of the surface functions. This surface is permanently available and is where the bulk of drawing is done by GameMaker.</Variable>
		<Variable Name="program_directory" Type="String" Deprecated="false" Get="true" Set="false" Instance="false">This will return the directory where the game executable is stored. However this may not always be useful, particularly as some devices run the exe from a *.zip file, so this would return the same no matter where the game is actually running from.</Variable>
		<Variable Name="temp_directory" Type="String" Deprecated="false" Get="true" Set="false" Instance="false">This can be used to return the temporary directory created for your game each time it is run (the root does not contain the final &quot;\&quot;). This directory will hold files and can be accessed while the game is running, but it will be removed (along with all files that it contains) when the game is closed.</Variable>
		<Variable Name="working_directory" Type="String" Deprecated="false" Get="true" Set="false" Instance="false">Working_directory can actually return two different values depending on what you are using it for. If you are writing a file to disk, working_directory points to the area of local storage that is reserved for your game on the target device (in windows this is &quot;%LOCALAPPDATA%/gamedir/&quot; where the &quot;gamedir&quot; is the directory with the name of your game). However, when reading from disk, working_directory can be either the local storage or the area where the included files are stored.</Variable>
		<Variable Name="event_data" Type="Id.DsMap" Deprecated="false" Get="true" Set="false" Instance="false">This variable is global in scope and is used to hold a DS Map when used in the Gesture Events, and -1 at all other times. The actual contents of the DS map will depend on the type of gesture event that triggered it, so refer to the individual sections for those events.</Variable>
		<Variable Name="keyboard_key" Type="Constant.VirtualKey" Deprecated="false" Get="true" Set="true" Instance="false">With this variable you can get the keycode of the key that is currently being pressed and it will return 0 if no key is being pressed when the check is done.</Variable>
		<Variable Name="keyboard_lastchar" Type="String" Deprecated="false" Get="true" Set="true" Instance="false">This variable stores a string of the last key pressed. This variable is not read only and you can change it, for example to set it to &quot;&quot; (an empty string) if you handled it already.</Variable>
		<Variable Name="keyboard_lastkey" Type="Constant.VirtualKey" Deprecated="false" Get="true" Set="true" Instance="false">This variable refers to the value that keyboard_key was in the previous frame, returning the keycode of that key (all standard keycode constants are returned). This variable is not read only and you can change it, for example to set it to -1 if you handled it already.</Variable>
		<Variable Name="keyboard_string" Type="String" Deprecated="false" Get="true" Set="true" Instance="false">This variable holds a string containing the last (at most) 1024 characters typed on the keyboard. This string will only contain printable characters typed, but it will correctly respond to pressing the backspace key by erasing the last character. This variable is not read only and you can change it, for example to set it to &quot;&quot; (an empty string) if you handled it already, and you can use the String Functions to manipulate it. Note that when using the on-screen Virtual Keyboard, only this variable will be updated with the keyboard input.</Variable>
		<Variable Name="mouse_button" Type="Constant.MouseButton" Deprecated="false" Get="true" Set="true" Instance="false">This read only variable returns the mouse button that is currently being pressed (currently, as in, this step) and can return any of the special mouse constants except mb_any.</Variable>
		<Variable Name="mouse_lastbutton" Type="Constant.MouseButton" Deprecated="false" Get="true" Set="true" Instance="false">This variable returns the last mouse button that was pressed and can return any of the special mouse constants except mb_any (you may also set this variable to one of the constants).</Variable>
		<Variable Name="mouse_x" Type="Real" Deprecated="false" Get="true" Set="false" Instance="false">This read-only variable returns the current x axis position of the mouse within the room.</Variable>
		<Variable Name="mouse_y" Type="Real" Deprecated="false" Get="true" Set="false" Instance="false">This read-only variable returns the current y axis position of the mouse within the room.</Variable>
		<Variable Name="cursor_sprite" Type="Asset.GMSprite" Deprecated="false" Get="true" Set="true" Instance="false">Setting this variable will instruct GameMaker to use the designated sprite as a cursor (basically setting it to the current mouse x/y position every step). The default value is -1 which is no sprite for the cursor, but you can assign any sprite index from the game assets or that has been imported from an external resource. Please note that there is no way to control the animation speed or image_index, so if the sprite has sub-images, these will be cycled at the same speed as the room speed. To remove the cursor sprite, you can set this variable to -1 again.</Variable>
		<Variable Name="game_display_name" Type="String" Deprecated="false" Get="true" Set="false" Instance="false">This read only variable returns the display name of your game for the target platform, as set in the Game Options.</Variable>
		<Variable Name="game_id" Type="Real" Deprecated="false" Get="true" Set="false" Instance="false">This read only variable returns the unique identifier for the game you have created. You can use this if you need a unique file name, or anything else that needs something to identify your game only. This can be set in the Game Options.</Variable>
		<Variable Name="game_project_name" Type="String" Deprecated="false" Get="true" Set="false" Instance="false">This read only variable returns the display name of your game for the target platform in a &quot;save-friendly&quot; format for the target platform. If the display name contains any characters that are not permitted for a file name, they will be replaced automatically with &quot;_&quot;. The display name can be set in the Game Options. Note that since there are no restrictions on file names for HTML5, this string will probably be the same as that returned by game_display_name.</Variable>
		<Variable Name="game_save_id" Type="String" Deprecated="false" Get="true" Set="false" Instance="false">This read-only variable will return the full path ID of the directory that is used by your game to save files to. This directory may or may not be visible to other applications, depending on the platform, and on the HTML5 target it will return an empty string.</Variable>
		<Variable Name="current_day" Type="Real" Deprecated="false" Get="true" Set="false" Instance="false">This read only variable will return the day as a value from 1 to 31, depending on the month.</Variable>
		<Variable Name="current_hour" Type="Real" Deprecated="false" Get="true" Set="false" Instance="false">This read only variable will return the hour that corresponds to the current moment based on the default time zone for the system (ie: local time). You can change the base time zone to use with the function date_set_timezone().</Variable>
		<Variable Name="current_minute" Type="Real" Deprecated="false" Get="true" Set="false" Instance="false">This read only variable will return the minutes that correspond to the current moment.</Variable>
		<Variable Name="current_month" Type="Real" Deprecated="false" Get="true" Set="false" Instance="false">This read only variable returns the current month as a numeric value where 1 is January and 12 is December.</Variable>
		<Variable Name="current_second" Type="Real" Deprecated="false" Get="true" Set="false" Instance="false">This read only variable will return the seconds that correspond to the current moment.</Variable>
		<Variable Name="current_time" Type="Real" Deprecated="false" Get="true" Set="false" Instance="false">This read only variable will return the number of milliseconds that have passed since the game was started.</Variable>
		<Variable Name="current_weekday" Type="Real" Deprecated="false" Get="true" Set="false" Instance="false">This read only variable will return the weekday as a value, where Sunday is 0 and Saturday is 6.</Variable>
		<Variable Name="current_year" Type="Real" Deprecated="false" Get="true" Set="false" Instance="false">This read only variable will return the current year.</Variable>
		<Variable Name="delta_time" Type="Real" Deprecated="false" Get="true" Set="false" Instance="false">The purpose of delta timing is to eliminate the effects of the lag or slowness of computers that try to handle complex graphics or a lot of code. It is a value that can be added on to the speed of objects so that they will eventually move at the same speed, regardless of lag. This is achieved in GameMaker by using the read only variable delta_time every step as it measures the time that has passed between one step and the next in microseconds (1microsecond is 1,000,000th of a second). Therefore the variable delta_time can be used to calculate how much faster (for example) a game character has to move to make up for a lag spike in the game.</Variable>
		<Variable Name="os_browser" Type="Constant.BrowserType" Deprecated="false" Get="true" Set="false" Instance="false">This read-only variable holds one of various constants (listed below) that GameMaker has to tell you which browser you are currently running the game in (if any).</Variable>
		<Variable Name="os_device" Type="Constant.DeviceType" Deprecated="false" Get="true" Set="false" Instance="false">This read-only variable holds one of various constant values listed below to tell you which device you are currently running the game on. Note this variable is deprecated in favour of the function os_get_info() which returns more accurate information on the device running the game.</Variable>
		<Variable Name="os_type" Type="Constant.OperatingSystem" Deprecated="false" Get="true" Set="false" Instance="false">This read-only variable holds one of various constant GameMaker has to tell you which operating system the game has been created for. Note that this is not necessarily the same as the OS of the device running it, since - for example - your game could be running on an Amazon Fire OS, but will have been built for the Android platform (in which case os_type will be os_android).</Variable>
		<Variable Name="os_version" Type="Real" Deprecated="false" Get="true" Set="false" Instance="false">This variable will tell you the version number for the OS that is running your game. For example, if you are running it on Windows 10, os_version will be equal to 655360.</Variable>
		<Variable Name="phy_active" Type="Bool" Deprecated="false" Get="true" Set="true" Instance="true">This variable controls whether or not the instance is currently &quot;active&quot;. Setting it to false will prevent the instance from participating in the physics world, and setting it to true will have it participating again. Please note that this is not the same as deactivating the instance, as the instance is still visible on the screen and can still be changed through code, rather this function just prevents it from participating in the physics simulation</Variable>
		<Variable Name="phy_angular_damping" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">This variable can be used to set the angular damping of the instance, or it can be used to get the current angular damping. The damping is the amount of &quot;resistance&quot; to angular rotation that the physics enabled instance has, with a lower value permitting the instance to rotate faster after a collision (for example) and a higher value making it require a more forceful push and rotate slower</Variable>
		<Variable Name="phy_angular_velocity" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">This variable can be used to set the angular velocity of the instance, or it can be used to get the current angular velocity, in degrees per second and the value used can be either positive (for clockwise rotation) or negative (for anticlockwise rotation). If you set this on an instance that was previously static (ie: it has a density of 0) it will become a kinematic object and begin rotating</Variable>
		<Variable Name="phy_bullet" Type="Bool" Deprecated="false" Get="true" Set="true" Instance="true">This variable defines whether or not the instance is extremely fast moving (for example a bullet). The default value is false but if set to true this tells GameMaker that the instance will be moving at such high speeds that it will require more expensive collision detection to ensure it doesn&apos;t pass through other instances undetected</Variable>
		<Variable Name="phy_collision_points" Type="Real" Deprecated="false" Get="true" Set="false" Instance="true">This read-only variable returns the number of points of collision detected between the two objects in the collision</Variable>
		<Variable Name="phy_collision_x" Type="Real" Deprecated="false" Get="true" Set="false" Instance="true">This read-only array returns the x position of all points detected in a collision between two physics enabled instances.</Variable>
		<Variable Name="phy_collision_y" Type="Real" Deprecated="false" Get="true" Set="false" Instance="true">This read-only array returns the y position of all points detected in a collision between two physics enabled instances.</Variable>
		<Variable Name="phy_col_normal_x" Type="Real" Deprecated="false" Get="true" Set="false" Instance="true">This read-only variable returns the x component of the collision normal corresponding to the phy_collision_x array value. For each contact point there is an associated contact normal (which is usually the same normal for all points of contact in the collision). This contact normal is a unit vector that points from one instance in the collision to another, and can be used, for example, to calculate the correct &quot;push&quot; direction to resolve collisions</Variable>
		<Variable Name="phy_col_normal_y" Type="Real" Deprecated="false" Get="true" Set="false" Instance="true">This read-only variable returns the y component of the collision normal corresponding to the phy_collision_y array value. For each contact point there is an associated contact normal (which is usually the same normal for all points of contact in the collision). This contact normal is a unit vector that points from one instance in the collision to another, and can be used, for example, to calculate the correct &quot;push&quot; direction to resolve collisions</Variable>
		<Variable Name="phy_com_x" Type="Real" Deprecated="false" Get="true" Set="false" Instance="true">This read-only variable will return the x position of the instance&apos;s center of mass. This is calculated automatically based on the density, inertia and mass of the instance as defined by the appropriate functions</Variable>
		<Variable Name="phy_com_y" Type="Real" Deprecated="false" Get="true" Set="false" Instance="true">This read-only variable will return the y position of the instance&apos;s center of mass. This is calculated automatically based on the density, inertia and mass of the instance as defined by the appropriate functions</Variable>
		<Variable Name="phy_dynamic" Type="Bool" Deprecated="false" Get="true" Set="false" Instance="true">A dynamic instance is one that is fully simulated within the physics world and this read-only variable will return true if the instance being checked is fully simulated or false if it is not</Variable>
		<Variable Name="phy_fixed_rotation" Type="Bool" Deprecated="false" Get="true" Set="true" Instance="true">This variable can be used to set whether or not the instance can be affected by rotational forces (default is false). If this is set to true, no external force (either from coded impulses or forces, or from collisions) will affect the rotation value of the instance and this would have to be set manually using the phy_rotation variable</Variable>
		<Variable Name="phy_inertia" Type="Real" Deprecated="false" Get="true" Set="false" Instance="true">Inertia is the measure of how hard it is to make something start or stop moving, so the lower the value for this read-only variable and the easier it will be to set the instance in motion, while higher values will require more force to start it moving</Variable>
		<Variable Name="phy_kinematic" Type="Bool" Deprecated="false" Get="true" Set="false" Instance="true">This read-only variable will return true if the instance is classed as being a kinematic object, or false if it is not. A kinematic instance is one that has infinite mass (a density of 0) but can move. So, to make an instance kinematic, you would first create a static instance and then set one or more of the instance variables related to movement (ie: phy_speed_x, phy_speed_y, or phy_angular_velocity)</Variable>
		<Variable Name="phy_linear_damping" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">This variable can be used to set the linear damping of the instance, or it can be used to get the current linear damping. The damping is the amount of &quot;resistance&quot; to forward movement that the physics enabled instance has, with a lower value permitting the instance to move and accelerate faster and a higher value making it require a more forceful push</Variable>
		<Variable Name="phy_linear_velocity_x" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">This variable can be used to get or change the x component of the instance&apos;s linear velocity vector and is defined in pixels per second (for pixels per step, see phy_speed_x). Altering this for a static instance (ie: an instance with 0 density) will turn it into a kinematic instance</Variable>
		<Variable Name="phy_linear_velocity_y" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">This variable can be used to get or change the y component of the instance&apos;s linear velocity vector and is defined in pixels per second (for pixels per step, see phy_speed_y). Altering this for a static instance (ie: an instance with 0 density) will turn it into a kinematic instance</Variable>
		<Variable Name="phy_mass" Type="Real" Deprecated="false" Get="true" Set="false" Instance="true">This read-only variable returns the mass of the instance in kilograms. This value is calculated automatically based on the surface area of the assigned fixtures and their density values, but it can be changed using the function physics_mass_properties().</Variable>
		<Variable Name="phy_position_x" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">This variable can be used to get (or to set) the x position of the instance within the game room physics world. Please note that the physics world may present errors when instances are moved by directly setting this variable as it will interrupt the continuous simulation. This variable is the physics equivalent of the instance variable x.</Variable>
		<Variable Name="phy_position_xprevious" Type="Real" Deprecated="false" Get="true" Set="false" Instance="true">This variable can be used to get (or to set) the previous x position of the instance within the game room physics world. This is the position of the instance within the physics world in the previous step to the current one.</Variable>
		<Variable Name="phy_position_y" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">This variable can be used to get (or to set) the y position of the instance within the game room physics world. Please note that the physics world may present errors when instances are moved by directly setting this variable as it will interrupt the continuous simulation. This variable is the physics equivalent of the instance variable y.</Variable>
		<Variable Name="phy_position_yprevious" Type="Real" Deprecated="false" Get="true" Set="false" Instance="true">This variable can be used to get (or to set) the previous y position of the instance within the game room physics world. This is the position of the instance within the physics world in the previous step to the current one</Variable>
		<Variable Name="phy_rotation" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">This variable can be used to get (or to set) the angle of the instances fixture in degrees, similar to setting or getting the image_angle. However note that in the physics world rotations are calculated in the opposite way to the normal GameMaker game world, meaning that vector functions like point_direction()should have their return values modified (simply making positive to negative should resolve this).</Variable>
		<Variable Name="phy_sleeping" Type="Bool" Deprecated="false" Get="true" Set="false" Instance="true">This read-only variable returns whether or not the instance is currently &quot;sleeping&quot; (true) or not (false), A &quot;sleeping&quot; instance is one that is not actively engaged in any physical simulation. GameMaker will put objects to sleep to save simulation cycles when an instance is at rest and not in collision with another instance</Variable>
		<Variable Name="phy_speed" Type="Real" Deprecated="false" Get="true" Set="false" Instance="true">This read-only variable returns the current speed of the physics enabled instance, defined in pixels per step. Should you need to change this value, you must do so by changing the x and y vectors using the variables phy_speed_x and phy_speed_y.</Variable>
		<Variable Name="phy_speed_x" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">This variable can be used to get or change the x component of the instance&apos;s linear speed vector and is defined in pixels per step (for pixels per second, see phy_linear_velocity_x). Altering this for a static instance (ie: an instance with 0 density) will turn it into a kinematic instance.</Variable>
		<Variable Name="phy_speed_y" Type="Real" Deprecated="false" Get="true" Set="true" Instance="true">This variable can be used to get or change the y component of the instance&apos;s linear speed vector and is defined in pixels per step (for pixels per second, see phy_linear_velocity_y). Altering this for a static instance (ie: an instance with 0 density) will turn it into a kinematic instance.</Variable>
		<Variable Name="browser_height" Type="Real" Deprecated="false" Get="true" Set="false" Instance="false">This variable holds the height (in pixels) of the browser the game is being run in. If no browser is present then the window size is returned. the following image illustrates how this variable relates to the rest of the positioning functions available through the Window Functions.</Variable>
		<Variable Name="browser_width" Type="Real" Deprecated="false" Get="true" Set="false" Instance="false">This variable holds the width (in pixels) of the browser the game is being run in. If no browser is present then the window size is returned. the following image illustrates how this variable relates to the rest of the positioning functions available through the Window Functions.</Variable>
		<Variable Name="webgl_enabled" Type="Bool" Deprecated="false" Get="true" Set="false" Instance="false">This read-only variable will return whether WebGL is enabled (true) or not (false) for your game. It will only work for those games running through a browser (ie: HTML5), and for all other platforms it will return true.</Variable>
		<Variable Name="argument_relative" Type="Real" Deprecated="true" Get="true" Set="false" Instance="false" />
		<Variable Name="argument" Type="ArgumentIdentity" Deprecated="false" Get="true" Set="true" Instance="false" />
		<Variable Name="argument0" Type="ArgumentIdentity" Deprecated="false" Get="true" Set="true" Instance="false" />
		<Variable Name="argument1" Type="ArgumentIdentity" Deprecated="false" Get="true" Set="true" Instance="false" />
		<Variable Name="argument2" Type="ArgumentIdentity" Deprecated="false" Get="true" Set="true" Instance="false" />
		<Variable Name="argument3" Type="ArgumentIdentity" Deprecated="false" Get="true" Set="true" Instance="false" />
		<Variable Name="argument4" Type="ArgumentIdentity" Deprecated="false" Get="true" Set="true" Instance="false" />
		<Variable Name="argument5" Type="ArgumentIdentity" Deprecated="false" Get="true" Set="true" Instance="false" />
		<Variable Name="argument6" Type="ArgumentIdentity" Deprecated="false" Get="true" Set="true" Instance="false" />
		<Variable Name="argument7" Type="ArgumentIdentity" Deprecated="false" Get="true" Set="true" Instance="false" />
		<Variable Name="argument8" Type="ArgumentIdentity" Deprecated="false" Get="true" Set="true" Instance="false" />
		<Variable Name="argument9" Type="ArgumentIdentity" Deprecated="false" Get="true" Set="true" Instance="false" />
		<Variable Name="argument10" Type="ArgumentIdentity" Deprecated="false" Get="true" Set="true" Instance="false" />
		<Variable Name="argument11" Type="ArgumentIdentity" Deprecated="false" Get="true" Set="true" Instance="false" />
		<Variable Name="argument12" Type="ArgumentIdentity" Deprecated="false" Get="true" Set="true" Instance="false" />
		<Variable Name="argument13" Type="ArgumentIdentity" Deprecated="false" Get="true" Set="true" Instance="false" />
		<Variable Name="argument14" Type="ArgumentIdentity" Deprecated="false" Get="true" Set="true" Instance="false" />
		<Variable Name="argument15" Type="ArgumentIdentity" Deprecated="false" Get="true" Set="true" Instance="false" />
		<Variable Name="argument_count" Type="Real" Deprecated="false" Get="true" Set="false" Instance="false" />
		<Variable Name="in_collision_tree" Type="Bool" Deprecated="false" Get="true" Set="false" Instance="true" />
		<Variable Name="room_speed" Type="Real" Deprecated="true" Get="true" Set="true" Instance="false" />
		<Variable Name="room_caption" Type="String" Deprecated="true" Get="true" Set="true" Instance="false" />
		<Variable Name="score" Type="Real" Deprecated="false" Get="true" Set="true" Instance="false" />
		<Variable Name="lives" Type="Real" Deprecated="false" Get="true" Set="true" Instance="false" />
		<Variable Name="health" Type="Real" Deprecated="false" Get="true" Set="true" Instance="false" />
		<Variable Name="show_score" Type="Bool" Deprecated="true" Get="true" Set="true" Instance="false" />
		<Variable Name="show_lives" Type="Bool" Deprecated="true" Get="true" Set="true" Instance="false" />
		<Variable Name="show_health" Type="Bool" Deprecated="true" Get="true" Set="true" Instance="false" />
		<Variable Name="caption_score" Type="String" Deprecated="true" Get="true" Set="true" Instance="false" />
		<Variable Name="caption_lives" Type="String" Deprecated="true" Get="true" Set="true" Instance="false" />
		<Variable Name="caption_health" Type="String" Deprecated="true" Get="true" Set="true" Instance="false" />
		<Variable Name="event_action" Type="Real" Deprecated="true" Get="true" Set="false" Instance="false" />
		<Variable Name="gamemaker_pro" Type="Bool" Deprecated="true" Get="true" Set="false" Instance="false" />
		<Variable Name="gamemaker_registered" Type="Bool" Deprecated="true" Get="true" Set="false" Instance="false" />
		<Variable Name="error_occurred" Type="Bool" Deprecated="true" Get="true" Set="true" Instance="false" />
		<Variable Name="error_last" Type="Bool" Deprecated="true" Get="true" Set="true" Instance="false" />
		<Variable Name="background_colour" Type="Constant.Color" Deprecated="true" Get="true" Set="true" Instance="false" Locale="GB" />
		<Variable Name="background_showcolour" Type="Real" Deprecated="true" Get="true" Set="true" Instance="false" Locale="GB" />
		<Variable Name="background_color" Type="Constant.Color" Deprecated="true" Get="true" Set="true" Instance="false" Locale="US" />
		<Variable Name="background_showcolor" Type="Bool" Deprecated="true" Get="true" Set="true" Instance="false" Locale="US" />
		<Variable Name="display_aa" Type="Real" Deprecated="false" Get="true" Set="false" Instance="false" />
		<Variable Name="async_load" Type="Id.DsMap" Deprecated="false" Get="true" Set="false" Instance="false" />
		<Variable Name="iap_data" Type="Undefined" Deprecated="true" Get="true" Set="false" Instance="false" />
		<Variable Name="rollback_current_frame" Type="Real" Deprecated="false" Get="true" Set="false" Instance="false" FeatureFlag="rollback">This global variable contains the network tick and can be used in rollback networking instead of wall clock time</Variable>
		<Variable Name="rollback_confirmed_frame" Type="Real" Deprecated="false" Get="true" Set="false" Instance="false" FeatureFlag="rollback">This global variable contains the frame number for which we have confirmed input for all players</Variable>
		<Variable Name="rollback_event_id" Type="Real" Deprecated="false" Get="true" Set="false" Instance="false" FeatureFlag="rollback">This global variable contains the last event id that was fired</Variable>
		<Variable Name="rollback_event_param" Type="Asset.GMObject" Deprecated="false" Get="true" Set="false" Instance="false" FeatureFlag="rollback">This global variable contains a struct with parameters for the last event that was fired</Variable>
		<Variable Name="rollback_game_running" Type="Bool" Deprecated="false" Get="true" Set="false" Instance="false" FeatureFlag="rollback">This global variable contains the flag if the game is currently running</Variable>
		<Variable Name="rollback_api_server" Type="String" Deprecated="false" Get="true" Set="false" Instance="false" FeatureFlag="rollback">This global variable contains the gx games API url</Variable>
		<Variable Name="player_id" Type="Real" Deprecated="false" Get="true" Set="false" Instance="true" FeatureFlag="rollback">This identifies which player the instance belongs to in the rollback networking system.</Variable>
		<Variable Name="player_local" Type="Bool" Deprecated="false" Get="true" Set="false" Instance="true" FeatureFlag="rollback">This identifies if this instance belongs to the local player in the rollback networking system.</Variable>
		<Variable Name="player_avatar_url" Type="String" Deprecated="false" Get="true" Set="false" Instance="true" FeatureFlag="rollback">The URL to the avatar associated with this player in Opera GX, for rollback networking.</Variable>
		<Variable Name="player_avatar_sprite" Type="Asset.GMSprite" Deprecated="false" Get="true" Set="false" Instance="true" FeatureFlag="rollback">A sprite of the avatar associated with this player in Opera GX, for rollback networking.</Variable>
		<Variable Name="player_type" Type="String" Deprecated="false" Get="true" Set="false" Instance="true" FeatureFlag="rollback">This identifies if this instance belongs a Guest or User account in the rollback networking system.</Variable>
		<Variable Name="player_user_id" Type="String" Deprecated="false" Get="true" Set="false" Instance="true" FeatureFlag="rollback">This is the user id in Opera GX in the rollback networking system.</Variable>
		<Variable Name="wallpaper_config" Type="Asset.GMObject" Deprecated="false" Get="true" Set="false" Instance="false" FeatureFlag="rollback">This global variable contains a struct with parameters for the last Wallpaper Config event that was fired</Variable>
	</Variables>
	<Constants>
		<Constant Name="$$implicit_argument$$" Type="Undefined"></Constant>
		<Constant Name="asset_object" Class="AssetType" Type="Real" Deprecated="false">The given name refers to an object.</Constant>
		<Constant Name="asset_sprite" Class="AssetType" Type="Real" Deprecated="false">The given name refers to a sprite.</Constant>
		<Constant Name="asset_sound" Class="AssetType" Type="Real" Deprecated="false">The given name refers to a sound.</Constant>
		<Constant Name="asset_room" Class="AssetType" Type="Real" Deprecated="false">The given name refers to a room.</Constant>
		<Constant Name="asset_tiles" Class="AssetType" Type="Real" Deprecated="false">The given name refers to a tile set.</Constant>
		<Constant Name="asset_path" Class="AssetType" Type="Real" Deprecated="false">The given name refers to a path.</Constant>
		<Constant Name="asset_script" Class="AssetType" Type="Real" Deprecated="false">The given name refers to a script.</Constant>
		<Constant Name="asset_font" Class="AssetType" Type="Real" Deprecated="false">The given name refers to a font.</Constant>
		<Constant Name="asset_timeline" Class="AssetType" Type="Real" Deprecated="false">The given name refers to a time line.</Constant>
		<Constant Name="asset_shader" Class="AssetType" Type="Real" Deprecated="false">The given name refers to a shader.</Constant>
		<Constant Name="asset_animationcurve" Class="AssetType" Type="Real" Deprecated="false">The given name refers to an Animation Curve.</Constant>
		<Constant Name="asset_particlesystem" Class="AssetType" Type="Real" Deprecated="false">The given name refers to a Particle System.</Constant>
		<Constant Name="asset_sequence" Class="AssetType" Type="Real" Deprecated="false">The given name refers to a Sequence.</Constant>
		<Constant Name="asset_unknown" Class="AssetType" Type="Real" Deprecated="false">The given name refers to an asset that either does not exist, or is not one of the above listed.</Constant>
		<Constant Name="audio_falloff_exponent_distance" Class="AudioFalloff" Type="Real" Deprecated="false"> gain = (listener_distance / reference_distance) ^ (-falloff_factor)</Constant>
		<Constant Name="audio_falloff_exponent_distance_clamped" Class="AudioFalloff" Type="Real" Deprecated="false"> distance = clamp(listener_distance, reference_distance, maximum_distance) gain = (distance / reference_distance) ^ (-falloff_factor)</Constant>
		<Constant Name="audio_falloff_exponent_distance_scaled" Class="AudioFalloff" Type="Real" Deprecated="false"> distance = clamp(listener_distance, reference_distance, maximum_distance) gain = ((distance / reference_distance) ^ (-falloff_factor)) * (((maximum_distance - distance) / (maximum_distance - reference_distance)) ^ (distance / maximum_distance))</Constant>
		<Constant Name="audio_falloff_inverse_distance" Class="AudioFalloff" Type="Real" Deprecated="false"> gain = reference_distance / (reference_distance + falloff_factor * (listener_distance - reference_distance))</Constant>
		<Constant Name="audio_falloff_inverse_distance_clamped" Class="AudioFalloff" Type="Real" Deprecated="false"> distance = clamp(listener_distance, reference_distance, maximum_distance) gain = reference_distance / (reference_distance + falloff_factor * (distance - reference_distance))</Constant>
		<Constant Name="audio_falloff_inverse_distance_scaled" Class="AudioFalloff" Type="Real" Deprecated="false"> distance = clamp(listener_distance, reference_distance, maximum_distance) gain = (reference_distance / (reference_distance + falloff_factor * (distance - reference_distance))) * (((maximum_distance - distance) / (maximum_distance - reference_distance)) ^ (distance / maximum_distance))</Constant>
		<Constant Name="audio_falloff_linear_distance" Class="AudioFalloff" Type="Real" Deprecated="false"> distance = min(distance, maximum_distance) gain = (1 - falloff_factor * (distance - reference_distance) / (maximum_distance - reference_distance))</Constant>
		<Constant Name="audio_falloff_linear_distance_clamped" Class="AudioFalloff" Type="Real" Deprecated="false"> distance = clamp(listener_distance, reference_distance, maximum_distance) gain = (1 - falloff_factor * (distance - reference_distance) / (maximum_distance - reference_distance))</Constant>
		<Constant Name="audio_falloff_none" Class="AudioFalloff" Type="Real" Deprecated="false"> gain = 1</Constant>
		<Constant Name="audio_mono" Class="AudioChannelType" Type="Real" Deprecated="false">Mono (single channel) audio.</Constant>
		<Constant Name="audio_stereo" Class="AudioChannelType" Type="Real" Deprecated="false">Stereo (dual channel) audio.</Constant>
		<Constant Name="audio_3D" Class="AudioChannelType" Type="Real" Deprecated="false">3D (5.1) audio.</Constant>
		<Constant Name="ev_create" Class="EventType" Type="Real" Deprecated="false">Create event</Constant>
		<Constant Name="ev_destroy" Class="EventType" Type="Real" Deprecated="false">Destroy event</Constant>
		<Constant Name="ev_cleanup" Class="EventType" Type="Real" Deprecated="false">Clean Up Event</Constant>
		<Constant Name="ev_step" Class="EventType" Type="Real" Deprecated="false">Step event</Constant>
		<Constant Name="ev_step_normal" Class="EventNumber" Type="Real" Deprecated="false">Step</Constant>
		<Constant Name="ev_step_begin" Class="EventNumber" Type="Real" Deprecated="false">Begin Step</Constant>
		<Constant Name="ev_step_end" Class="EventNumber" Type="Real" Deprecated="false">End Step</Constant>
		<Constant Name="ev_alarm" Class="EventType" Type="Real" Deprecated="false">Alarm event</Constant>
		<Constant Name="ev_keyboard" Class="EventType" Type="Real" Deprecated="false">Keyboard/Keyboard Pressed/Keyboard Released</Constant>
		<Constant Name="ev_mouse" Class="EventType" Type="Real" Deprecated="false">Mouse event</Constant>
		<Constant Name="ev_left_button" Class="EventNumber" Type="Real" Deprecated="false">Left button held down on object</Constant>
		<Constant Name="ev_right_button" Class="EventNumber" Type="Real" Deprecated="false">Right button held down on object</Constant>
		<Constant Name="ev_middle_button" Class="EventNumber" Type="Real" Deprecated="false">Middle button (or clickable wheel) held down on object</Constant>
		<Constant Name="ev_no_button" Class="EventNumber" Type="Real" Deprecated="false">No buttons held down</Constant>
		<Constant Name="ev_left_press" Class="EventNumber" Type="Real" Deprecated="false">Left button just pressed on object</Constant>
		<Constant Name="ev_right_press" Class="EventNumber" Type="Real" Deprecated="false">Right button just pressed on object</Constant>
		<Constant Name="ev_middle_press" Class="EventNumber" Type="Real" Deprecated="false">Middle button (or clickable wheel) just pressed on object</Constant>
		<Constant Name="ev_left_release" Class="EventNumber" Type="Real" Deprecated="false">Left button just released on object</Constant>
		<Constant Name="ev_right_release" Class="EventNumber" Type="Real" Deprecated="false">Right button just released on object</Constant>
		<Constant Name="ev_middle_release" Class="EventNumber" Type="Real" Deprecated="false">Middle button just released on object</Constant>
		<Constant Name="ev_mouse_enter" Class="EventNumber" Type="Real" Deprecated="false">Mouse just entered object&apos;s bounding box</Constant>
		<Constant Name="ev_mouse_leave" Class="EventNumber" Type="Real" Deprecated="false">Mouse just left object&apos;s bounding box</Constant>
		<Constant Name="ev_mouse_wheel_up" Class="EventNumber" Type="Real" Deprecated="false">Mouse wheel scrolled upwards</Constant>
		<Constant Name="ev_mouse_wheel_down" Class="EventNumber" Type="Real" Deprecated="false">Mouse wheel scrolled downwards</Constant>
		<Constant Name="ev_global_left_button" Class="EventNumber" Type="Real" Deprecated="false">Left button held down anywhere</Constant>
		<Constant Name="ev_global_right_button" Class="EventNumber" Type="Real" Deprecated="false">Right button held down anywhere</Constant>
		<Constant Name="ev_global_middle_button" Class="EventNumber" Type="Real" Deprecated="false">Middle button (or clickable wheel) held down anywhere</Constant>
		<Constant Name="ev_global_left_press" Class="EventNumber" Type="Real" Deprecated="false">Left button just pressed anywhere</Constant>
		<Constant Name="ev_global_right_press" Class="EventNumber" Type="Real" Deprecated="false">Right button just pressed anywhere</Constant>
		<Constant Name="ev_global_middle_press" Class="EventNumber" Type="Real" Deprecated="false">Middle button (or clickable wheel) just pressed anywhere</Constant>
		<Constant Name="ev_global_left_release" Class="EventNumber" Type="Real" Deprecated="false">Left button just released anywhere</Constant>
		<Constant Name="ev_global_right_release" Class="EventNumber" Type="Real" Deprecated="false">Right button just released anywhere</Constant>
		<Constant Name="ev_global_middle_release" Class="EventNumber" Type="Real" Deprecated="false">Middle button just released anywhere</Constant>
		<Constant Name="ev_gesture" Class="EventType" Type="Real" Deprecated="false">A gesture event (Tap, Drag, Flick, Pinch or Rotate)</Constant>
		<Constant Name="ev_gesture_tap" Class="EventNumber" Type="Real" Deprecated="false">A single click/touch and release has been detected for an instance</Constant>
		<Constant Name="ev_gesture_double_tap" Class="EventNumber" Type="Real" Deprecated="false">Two quick touches/clicks and releases have been detected for an instance</Constant>
		<Constant Name="ev_gesture_drag_start" Class="EventNumber" Type="Real" Deprecated="false">The beginning of a drag gesture has been detected for an instance</Constant>
		<Constant Name="ev_gesture_dragging" Class="EventNumber" Type="Real" Deprecated="false">A touch/click has been held and moved for an instance</Constant>
		<Constant Name="ev_gesture_drag_end" Class="EventNumber" Type="Real" Deprecated="false">The release of the touch/click from a drag has been detected for an instance</Constant>
		<Constant Name="ev_gesture_flick" Class="EventNumber" Type="Real" Deprecated="false">The release of a touch/click from a drag had enough movement for a flick event to be detected for the instance</Constant>
		<Constant Name="ev_gesture_pinch_start" Class="EventNumber" Type="Real" Deprecated="false">Two touches and a straight movement have been detected for an instance</Constant>
		<Constant Name="ev_gesture_pinch_in" Class="EventNumber" Type="Real" Deprecated="false">The movement between two touches for an instance has been detected as inwards</Constant>
		<Constant Name="ev_gesture_pinch_out" Class="EventNumber" Type="Real" Deprecated="false">The movement between two touches for an instance has been detected as outwards</Constant>
		<Constant Name="ev_gesture_pinch_end" Class="EventNumber" Type="Real" Deprecated="false">The release of one (or both) touches for a pinch has been detected for an instance</Constant>
		<Constant Name="ev_gesture_rotate_start" Class="EventNumber" Type="Real" Deprecated="false">The movement between two touches for an instance has been detected as a rotation</Constant>
		<Constant Name="ev_gesture_rotating" Class="EventNumber" Type="Real" Deprecated="false">The movement between two touches for an instance has been detected as rotating</Constant>
		<Constant Name="ev_gesture_rotate_end" Class="EventNumber" Type="Real" Deprecated="false">The release of one (or both) touches for a rotation has been detected for an instance</Constant>
		<Constant Name="ev_global_gesture_tap" Class="EventNumber" Type="Real" Deprecated="false">A single click/touch and release has been detected anywhere in the room</Constant>
		<Constant Name="ev_global_gesture_double_tap" Class="EventNumber" Type="Real" Deprecated="false">Two quick touches/clicks and releases have been detected anywhere in the room</Constant>
		<Constant Name="ev_global_gesture_drag_start" Class="EventNumber" Type="Real" Deprecated="false">The beginning of a drag gesture has been detected anywhere in the room</Constant>
		<Constant Name="ev_global_gesture_dragging" Class="EventNumber" Type="Real" Deprecated="false">A touch/click has been held and moved anywhere in the room</Constant>
		<Constant Name="ev_global_gesture_drag_end" Class="EventNumber" Type="Real" Deprecated="false">The release of the touch/click from a drag has been detected anywhere in the room</Constant>
		<Constant Name="ev_global_gesture_flick" Class="EventNumber" Type="Real" Deprecated="false">The release of a touch/click from a drag had enough movement for a flick event to be detected anywhere in the room</Constant>
		<Constant Name="ev_global_gesture_pinch_start" Class="EventNumber" Type="Real" Deprecated="false">Two touches and a straight movement have been detected anywhere in the room</Constant>
		<Constant Name="ev_global_gesture_pinch_in" Class="EventNumber" Type="Real" Deprecated="false">The movement between two touches anywhere in the room has been detected as inwards</Constant>
		<Constant Name="ev_global_gesture_pinch_out" Class="EventNumber" Type="Real" Deprecated="false">The movement between two touches anywhere in the room has been detected as outwards</Constant>
		<Constant Name="ev_global_gesture_pinch_end" Class="EventNumber" Type="Real" Deprecated="false">The release of one (or both) touches for a pinch has been detected anywhere in the room</Constant>
		<Constant Name="ev_global_gesture_rotate_start" Class="EventNumber" Type="Real" Deprecated="false">The movement between two touches anywhere in the room has been detected as a rotation</Constant>
		<Constant Name="ev_global_gesture_rotating" Class="EventNumber" Type="Real" Deprecated="false">The movement between two touches anywhere in the room has been detected as rotating</Constant>
		<Constant Name="ev_global_gesture_rotate_end" Class="EventNumber" Type="Real" Deprecated="false">The release of one (or both) touches for a rotation has been detected anywhere in the room</Constant>
		<Constant Name="ev_collision" Class="EventType" Type="Real" Deprecated="false">Collision with an object</Constant>
		<Constant Name="ev_other" Class="EventType" Type="Real" Deprecated="false">One of the actions listed under &apos;Other&apos;</Constant>
		<Constant Name="ev_outside" Class="EventNumber" Type="Real" Deprecated="false">Whether the instance is outside of the room</Constant>
		<Constant Name="ev_boundary" Class="EventNumber" Type="Real" Deprecated="false">Whether the instance is intersecting the boundary</Constant>
		<Constant Name="ev_outside_view0" Class="EventNumber" Type="Real" Deprecated="false">Whether the instance is outside the given view (0 to 7)</Constant>
		<Constant Name="ev_boundary_view0" Class="EventNumber" Type="Real" Deprecated="false">Whether the instance is interesecting with the boundary of the given view (0 to 7)</Constant>
		<Constant Name="ev_game_start" Class="EventNumber" Type="Real" Deprecated="false">Only triggered at the start of the game</Constant>
		<Constant Name="ev_game_end" Class="EventNumber" Type="Real" Deprecated="false">Only triggered at the end of the game</Constant>
		<Constant Name="ev_room_start" Class="EventNumber" Type="Real" Deprecated="false">Only triggered at the start of a room</Constant>
		<Constant Name="ev_room_end" Class="EventNumber" Type="Real" Deprecated="false">Only triggered at the end of a room</Constant>
		<Constant Name="ev_animation_end" Class="EventNumber" Type="Real" Deprecated="false">If the object&apos;s sprite has reached the end of its animation</Constant>
		<Constant Name="ev_animation_update" Class="EventNumber" Type="Real" Deprecated="false">Animation event that runs every step for objects that use skeletal animations</Constant>
		<Constant Name="ev_animation_event" Class="EventNumber" Type="Real" Deprecated="false">Animation event that runs for skeletal animations as assigned in the skeletal animation tool</Constant>
		<Constant Name="ev_end_of_path" Class="EventNumber" Type="Real" Deprecated="false">If the object has reached the end of a path it is following</Constant>
		<Constant Name="ev_user0" Class="EventNumber" Type="Real" Deprecated="false">One of the 16 available user events.</Constant>
		<Constant Name="ev_broadcast_message" Class="EventNumber" Type="Real" Deprecated="false">Broadcast Message event used for sprites and sequences</Constant>
		<Constant Name="ev_draw" Class="EventType" Type="Real" Deprecated="false">Draw event. NOTE: This event cannot be forced outside of a draw event and the constants and the constants are only for identifying the event when performed in these cases.</Constant>
		<Constant Name="ev_draw_begin" Class="EventNumber" Type="Real" Deprecated="false">The draw begin event.</Constant>
		<Constant Name="ev_draw_end" Class="EventNumber" Type="Real" Deprecated="false">The draw end event.</Constant>
		<Constant Name="ev_draw_pre" Class="EventNumber" Type="Real" Deprecated="false">The pre draw event.</Constant>
		<Constant Name="ev_draw_normal" Class="EventNumber" Type="Real" Deprecated="false">The normal draw event.</Constant>
		<Constant Name="ev_draw_post" Class="EventNumber" Type="Real" Deprecated="false">The post draw event.</Constant>
		<Constant Name="ev_gui" Class="EventNumber" Type="Real" Deprecated="false">The draw gui event.</Constant>
		<Constant Name="ev_gui_begin" Class="EventNumber" Type="Real" Deprecated="false">The draw gui begin event.</Constant>
		<Constant Name="ev_gui_end" Class="EventNumber" Type="Real" Deprecated="false">The draw gui end event.</Constant>
		<Constant Name="ev_async_web_image_load" Class="AsyncEventType" Type="Real" Deprecated="false">Image Loaded event</Constant>
		<Constant Name="ev_async_web_iap" Class="AsyncEventType" Type="Real" Deprecated="false">In-App Purchase event</Constant>
		<Constant Name="ev_async_web_cloud" Class="AsyncEventType" Type="Real" Deprecated="false">Cloud event</Constant>
		<Constant Name="ev_async_web_networking" Class="AsyncEventType" Type="Real" Deprecated="false">Networking event</Constant>
		<Constant Name="ev_async_web_steam" Class="AsyncEventType" Type="Real" Deprecated="false">Steam event</Constant>
		<Constant Name="ev_async_social" Class="AsyncEventType" Type="Real" Deprecated="false">Social event</Constant>
		<Constant Name="ev_async_push_notification" Class="AsyncEventType" Type="Real" Deprecated="false">Push Notification event</Constant>
		<Constant Name="ev_async_save_load" Class="AsyncEventType" Type="Real" Deprecated="false">Save/Load Event</Constant>
		<Constant Name="ev_async_audio_recording" Class="AsyncEventType" Type="Real" Deprecated="false">Audio Recording event</Constant>
		<Constant Name="ev_async_audio_playback" Class="AsyncEventType" Type="Real" Deprecated="false">Audio Playback event</Constant>
		<Constant Name="ev_async_audio_playback_ended" Class="AsyncEventType" Type="Real" Deprecated="false">Audio Playback Ended event</Constant>
		<Constant Name="ev_async_system_event" Class="AsyncEventType" Type="Real" Deprecated="false">System event</Constant>
		<Constant Name="ev_async_dialog" Class="AsyncEventType" Type="Real" Deprecated="false">Dialog event</Constant>
		<Constant Name="ev_async_web" Class="AsyncEventType" Type="Real" Deprecated="false">Web event</Constant>
		<Constant Name="path_action_stop" Class="PathAction" Type="Real" Deprecated="false">End the path</Constant>
		<Constant Name="path_action_restart" Class="PathAction" Type="Real" Deprecated="false">Continue the path from the start, jumping to the start position again if the path is not closed</Constant>
		<Constant Name="path_action_continue" Class="PathAction" Type="Real" Deprecated="false">Continue from the current position</Constant>
		<Constant Name="path_action_reverse" Class="PathAction" Type="Real" Deprecated="false">Go backwards along the path again (achieved by reversing the path movement speed)</Constant>
		<Constant Name="layerelementtype_background" Class="LayerElementType" Type="Real" Deprecated="false">The element is a background.</Constant>
		<Constant Name="layerelementtype_instance" Class="LayerElementType" Type="Real" Deprecated="false">The element is an instance.</Constant>
		<Constant Name="layerelementtype_sprite" Class="LayerElementType" Type="Real" Deprecated="false">The element is a sprite asset.</Constant>
		<Constant Name="layerelementtype_tilemap" Class="LayerElementType" Type="Real" Deprecated="false">The element is a tilemap.</Constant>
		<Constant Name="layerelementtype_particlesystem" Class="LayerElementType" Type="Real" Deprecated="false">The element is a particle system.</Constant>
		<Constant Name="layerelementtype_tile" Class="LayerElementType" Type="Real" Deprecated="false">The element is a legacy background tile (this is only valid for projects that have been imported from previous versions of GameMaker).</Constant>
		<Constant Name="layerelementtype_sequence" Class="LayerElementType" Type="Real" Deprecated="false">The element is a sequence asset.</Constant>
		<Constant Name="tile_rotate" Class="TileMask" Type="Real" Deprecated="false">Used to set/get the rotate bit of a tile data blob.</Constant>
		<Constant Name="tile_mirror" Class="TileMask" Type="Real" Deprecated="false">Used to set/get the mirror bit of a tile data blob.</Constant>
		<Constant Name="tile_flip" Class="TileMask" Type="Real" Deprecated="false">Used to set/get the flip bit of a tile data blob.</Constant>
		<Constant Name="tile_index_mask" Class="TileMask" Type="Real" Deprecated="false">A special constant that is for &quot;and&quot;-ing with the tile data blob to extract the tile index.</Constant>
		<Constant Name="seqtracktype_graphic" Class="SequenceTrackType" Type="Real" Deprecated="false">This is a graphics (sprite) asset track.</Constant>
		<Constant Name="seqtracktype_audio" Class="SequenceTrackType" Type="Real" Deprecated="false">This is an audio asset track.</Constant>
		<Constant Name="seqtracktype_instance" Class="SequenceTrackType" Type="Real" Deprecated="false">This is an instance asset track.</Constant>
		<Constant Name="seqtracktype_sequence" Class="SequenceTrackType" Type="Real" Deprecated="false">This is a sequence asset track.</Constant>
		<Constant Name="seqtracktype_clipmask" Class="SequenceTrackType" Type="Real" Deprecated="false">This is a clip mask group asset track.</Constant>
		<Constant Name="seqtracktype_clipmask_mask" Class="SequenceTrackType" Type="Real" Deprecated="false">This is a clip mask sprite asset track used for generating the clip mask.</Constant>
		<Constant Name="seqtracktype_clipmask_subject" Class="SequenceTrackType" Type="Real" Deprecated="false">This is a clip mask sprite asset track that is being masked.</Constant>
		<Constant Name="seqtracktype_group" Class="SequenceTrackType" Type="Real" Deprecated="false">This group folder asset track.</Constant>
		<Constant Name="seqtracktype_colour" Class="SequenceTrackType" Type="Real" Deprecated="false">This is a colour data parameter track.</Constant>
		<Constant Name="seqtracktype_real" Class="SequenceTrackType" Type="Real" Deprecated="false">This is a real number value parameter track.</Constant>
		<Constant Name="seqtracktype_message" Class="SequenceTrackType" Type="Real" Deprecated="false">This is a broadcast message track.</Constant>
		<Constant Name="seqtracktype_moment" Class="SequenceTrackType" Type="Real" Deprecated="false">This is an event/moment track.</Constant>
		<Constant Name="seqtracktype_text" Class="SequenceTrackType" Type="Real" Deprecated="false">This is a text track.</Constant>
		<Constant Name="seqtracktype_particlesystem" Class="SequenceTrackType" Type="Real" Deprecated="false">This is a particle system asset track.</Constant>
		<Constant Name="seqtracktype_bool" Class="SequenceTrackType" Type="Real" Deprecated="false">Not used currently.</Constant>
		<Constant Name="seqtracktype_string" Class="SequenceTrackType" Type="Real" Deprecated="false">Not used currently.</Constant>
		<Constant Name="seqtracktype_spriteframes" Class="SequenceTrackType" Type="Real" Deprecated="false">Not used currently.</Constant>
		<Constant Name="seqtracktype_empty" Class="SequenceTrackType" Type="Real" Deprecated="false">Not used currently.</Constant>
		<Constant Name="seqaudiokey_loop" Class="SequenceAudioKey" Type="Real" Deprecated="false">The sound will loop when played.</Constant>
		<Constant Name="seqaudiokey_oneshot" Class="SequenceAudioKey" Type="Real" Deprecated="false">The sound will only play once then stop.</Constant>
		<Constant Name="seqtextkey_left" Class="SequenceTextKey" Type="Real" Deprecated="false">The text will be left-aligned.</Constant>
		<Constant Name="seqtextkey_center" Class="SequenceTextKey" Type="Real" Deprecated="false">The text will be center-aligned.</Constant>
		<Constant Name="seqtextkey_right" Class="SequenceTextKey" Type="Real" Deprecated="false">The text will be right-aligned.</Constant>
		<Constant Name="seqtextkey_justify" Class="SequenceTextKey" Type="Real" Deprecated="false">The text will be justified.</Constant>
		<Constant Name="seqtextkey_top" Class="SequenceTextKey" Type="Real" Deprecated="false">The text will be vertically aligned to the top of the frame.</Constant>
		<Constant Name="seqtextkey_middle" Class="SequenceTextKey" Type="Real" Deprecated="false">The text will be vertically aligned to the middle of the frame.</Constant>
		<Constant Name="seqtextkey_bottom" Class="SequenceTextKey" Type="Real" Deprecated="false">The text will be vertically aligned to the bottom of the frame.</Constant>
		<Constant Name="seqdir_right" Class="SequenceDirection" Type="Real" Deprecated="false">The sequence will play frames in an incremental order from left to right</Constant>
		<Constant Name="seqdir_left" Class="SequenceDirection" Type="Real" Deprecated="false">The sequence will play frames in a decremental order from right to left</Constant>
		<Constant Name="seqplay_oneshot" Class="SequencePlay" Type="Real" Deprecated="false">The sequence will play once then stop when finished.</Constant>
		<Constant Name="seqplay_loop" Class="SequencePlay" Type="Real" Deprecated="false">The sequence will loop, with the playhead going back to the start when it reaches the end of the playback region.</Constant>
		<Constant Name="seqplay_pingpong" Class="SequencePlay" Type="Real" Deprecated="false">The sequence will loop, with the playhead reversing direction when it reaches the end of the playback region.</Constant>
		<Constant Name="spritespeed_framespersecond" Class="SequenceSpriteSpeed" Type="Real" Deprecated="false">Specifies that playbackSpeed should be interpreted as frames-per-second</Constant>
		<Constant Name="spritespeed_framespergameframe" Class="SequenceSpriteSpeed" Type="Real" Deprecated="false">Specifies that playbackSpeed should be interpreted as frames-per-game-frame.</Constant>
		<Constant Name="nineslice_left" Class="NineSlice" Type="Real" Deprecated="false">The left edge slice</Constant>
		<Constant Name="nineslice_top" Class="NineSlice" Type="Real" Deprecated="false">The top edge slice</Constant>
		<Constant Name="nineslice_right" Class="NineSlice" Type="Real" Deprecated="false">The right edge slice</Constant>
		<Constant Name="nineslice_bottom" Class="NineSlice" Type="Real" Deprecated="false">The bottom edge slice</Constant>
		<Constant Name="nineslice_centre" Class="NineSlice" Type="Real" Deprecated="false">The centre slice</Constant>
		<Constant Name="nineslice_stretch" Class="NineSlice" Type="Real" Deprecated="false">The slice will be stretched</Constant>
		<Constant Name="nineslice_repeat" Class="NineSlice" Type="Real" Deprecated="false">The slice will be repeated</Constant>
		<Constant Name="nineslice_mirror" Class="NineSlice" Type="Real" Deprecated="false">The slice will be repeated by mirroring</Constant>
		<Constant Name="nineslice_blank" Class="NineSlice" Type="Real" Deprecated="false">The slice will not be stretched or repeated, resulting in a blank area after it</Constant>
		<Constant Name="nineslice_hide" Class="NineSlice" Type="Real" Deprecated="false">The slice will not appear at all</Constant>
		<Constant Name="texturegroup_status_unloaded" Class="NineSlice" Type="Real" Deprecated="false">The texture group is unloaded</Constant>
		<Constant Name="texturegroup_status_loading" Class="NineSlice" Type="Real" Deprecated="false">The texture group is loading</Constant>
		<Constant Name="texturegroup_status_loaded" Class="NineSlice" Type="Real" Deprecated="false">The texture group is loaded</Constant>
		<Constant Name="texturegroup_status_fetched" Class="NineSlice" Type="Real" Deprecated="false">The texture group is decompressed and ready to be used</Constant>
		<Constant Name="surface_rgba8unorm" Class="SurfaceFormatType" Type="Real" Deprecated="false">8 bit integer per channel (normalised) RGBA surface format</Constant>
		<Constant Name="surface_r16float" Class="SurfaceFormatType" Type="Real" Deprecated="false">16 bit float single channel surface format</Constant>
		<Constant Name="surface_r32float" Class="SurfaceFormatType" Type="Real" Deprecated="false">32 bit float single channel surface format</Constant>
		<Constant Name="surface_rgba4unorm" Class="SurfaceFormatType" Type="Real" Deprecated="false">4 bit integer per channel (normalised) RGBA surface format</Constant>
		<Constant Name="surface_r8unorm" Class="SurfaceFormatType" Type="Real" Deprecated="false">8 bit integer single channel (normalised) surface format</Constant>
		<Constant Name="surface_rg8unorm" Class="SurfaceFormatType" Type="Real" Deprecated="false">8 bit integer two channel (normalised) surface format</Constant>
		<Constant Name="surface_rgba16float" Class="SurfaceFormatType" Type="Real" Deprecated="false">16 bit float per channel RGBA surface format</Constant>
		<Constant Name="surface_rgba32float" Class="SurfaceFormatType" Type="Real" Deprecated="false">32 bit float per channel RGBA surface format</Constant>
		<Constant Name="bboxmode_automatic" Class="BBoxMode" Type="Real" Deprecated="false">Automatic - The bounding box will be calculated automatically, based on the tolerance setting for the sprite</Constant>
		<Constant Name="bboxmode_fullimage" Class="BBoxMode" Type="Real" Deprecated="false">Full Image - The bounding box will be set to use the full width and height of the sprite, regardless of the tolerance and &quot;empty&quot; pixels</Constant>
		<Constant Name="bboxmode_manual" Class="BBoxMode" Type="Real" Deprecated="false">Manual - The bounding box has been set manually to user defined values (either in the sprite editor, or using the function sprite_set_bbox())</Constant>
		<Constant Name="bboxkind_rectangular" Class="CollisionMask" Type="Real" Deprecated="false">A rectangular (non-rotating) rectangle collision mask shape</Constant>
		<Constant Name="bboxkind_ellipse" Class="CollisionMask" Type="Real" Deprecated="false">An elliptical collision mask shape</Constant>
		<Constant Name="bboxkind_diamond" Class="CollisionMask" Type="Real" Deprecated="false">A diamond collision mask shape</Constant>
		<Constant Name="bboxkind_precise" Class="CollisionMask" Type="Real" Deprecated="false">A precise collision mask, where the mask will conform to the non-transparent pixels of the sprite, based on the tolerance value given (see below))</Constant>
		<Constant Name="buffer_fixed" Class="BufferType" Type="Real" Deprecated="false">A buffer of fixed size.</Constant>
		<Constant Name="buffer_grow" Class="BufferType" Type="Real" Deprecated="false">A buffer that will &quot;grow&quot; dynamically as data is added</Constant>
		<Constant Name="buffer_wrap" Class="BufferType" Type="Real" Deprecated="false">A buffer where the data will &quot;wrap&quot;. When the data being added reaches the limit of the buffer size, the overwrite will be placed back at the start of the buffer, and further writing will continue from that point.</Constant>
		<Constant Name="buffer_fast" Class="BufferType" Type="Real" Deprecated="false">Special &quot;stripped&quot; buffer that is extremely fast to read/write to. Can only be used with buffer_u8 data types, and must be 1 byte aligned.</Constant>
		<Constant Name="buffer_vbuffer" Class="BufferType" Type="Real" Deprecated="false">This type of buffer is to be used as a vertex buffer only.</Constant>
		<Constant Name="buffer_u8" Class="BufferDataType" Type="Real" Deprecated="false">An unsigned, 8bit integer. This is a positive value from 0 to 255.</Constant>
		<Constant Name="buffer_s8" Class="BufferDataType" Type="Real" Deprecated="false">A signed, 8bit integer. This can be a positive or negative value from -128 to 127 (0 is classed as positive).</Constant>
		<Constant Name="buffer_u16" Class="BufferDataType" Type="Real" Deprecated="false">An unsigned, 16bit integer. This is a positive value from 0 - 65,535.</Constant>
		<Constant Name="buffer_s16" Class="BufferDataType" Type="Real" Deprecated="false">A signed, 16bit integer. This can be a positive or negative value from -32,768 to 32,767 (0 is classed as positive).</Constant>
		<Constant Name="buffer_u32" Class="BufferDataType" Type="Real" Deprecated="false">An unsigned, 32bit integer. This is a positive value from 0 to 4,294,967,295.</Constant>
		<Constant Name="buffer_s32" Class="BufferDataType" Type="Real" Deprecated="false">A signed, 32bit integer. This can be a positive or negative value from -2,147,483,648 to 2,147,483,647 (0 is classed as positive).</Constant>
		<Constant Name="buffer_u64" Class="BufferDataType" Type="Real" Deprecated="false">An unsigned 64bit integer.</Constant>
		<Constant Name="buffer_f16" Class="BufferDataType" Type="Real" Deprecated="false">A 16bit float. This can be a positive or negative value within the range of +/- 65504. (Not currently supported!)</Constant>
		<Constant Name="buffer_f32" Class="BufferDataType" Type="Real" Deprecated="false">A 32bit float. This can be a positive or negative value within the range of +/-16777216.</Constant>
		<Constant Name="buffer_f64" Class="BufferDataType" Type="Real" Deprecated="false">A 64bit float.</Constant>
		<Constant Name="buffer_bool" Class="BufferDataType" Type="Real" Deprecated="false">A boolean value. Can only be either 1 or 0 (true or false)</Constant>
		<Constant Name="buffer_string" Class="BufferDataType" Type="Real" Deprecated="false">A string of any size.</Constant>
		<Constant Name="buffer_text" Class="BufferDataType" Type="Real" Deprecated="false">A string of any size, without the final null terminating character.</Constant>
		<Constant Name="buffer_seek_start" Class="SeekOffset" Type="Real" Deprecated="false">The start of the buffer</Constant>
		<Constant Name="buffer_seek_relative" Class="SeekOffset" Type="Real" Deprecated="false">A position relative to the current read/write position</Constant>
		<Constant Name="buffer_seek_end" Class="SeekOffset" Type="Real" Deprecated="false">The end of the buffer</Constant>
		<Constant Name="display_landscape" Type="Real" Deprecated="false">The device is being held horizontally ie: The longest edge is from left to right, and the menu button is on the right.</Constant>
		<Constant Name="display_landscape_flipped" Type="Real" Deprecated="false">As above, only now the menu button is on the left.</Constant>
		<Constant Name="display_portrait" Type="Real" Deprecated="false">The device is being held vertically ie: The longest edge is from top to bottom, and the menu button is at the bottom.</Constant>
		<Constant Name="display_portrait_flipped" Type="Real" Deprecated="false">As above, only now the menu button is at the top.</Constant>
		<Constant Name="tm_sleep" Type="Real" Deprecated="false">The sleep margin value is the main timing method</Constant>
		<Constant Name="tm_countvsyncs" Type="Real" Deprecated="false">Vsync timing is the main timing method (default for all supported platforms)</Constant>
		<Constant Name="cr_none" Class="Cursor" Type="Real" Deprecated="false"> </Constant>
		<Constant Name="cr_default" Class="Cursor" Type="Real" Deprecated="false"/>
		<Constant Name="cr_arrow" Class="Cursor" Type="Real" Deprecated="false"/>
		<Constant Name="cr_cross" Class="Cursor" Type="Real" Deprecated="false"/>
		<Constant Name="cr_beam" Class="Cursor" Type="Real" Deprecated="false"/>
		<Constant Name="cr_size_nesw" Class="Cursor" Type="Real" Deprecated="false"/>
		<Constant Name="cr_size_ns" Class="Cursor" Type="Real" Deprecated="false"/>
		<Constant Name="cr_size_nwse" Class="Cursor" Type="Real" Deprecated="false"/>
		<Constant Name="cr_size_we" Class="Cursor" Type="Real" Deprecated="false"/>
		<Constant Name="cr_uparrow" Class="Cursor" Type="Real" Deprecated="false"/>
		<Constant Name="cr_hourglass" Class="Cursor" Type="Real" Deprecated="false"/>
		<Constant Name="cr_drag" Class="Cursor" Type="Real" Deprecated="false"/>
		<Constant Name="cr_appstart" Class="Cursor" Type="Real" Deprecated="false"/>
		<Constant Name="cr_handpoint" Class="Cursor" Type="Real" Deprecated="false"/>
		<Constant Name="cr_size_all" Class="Cursor" Type="Real" Deprecated="false"/>
		<Constant Name="ds_type_map" Class="DsType" Type="Real" Deprecated="false">A map data structure</Constant>
		<Constant Name="ds_type_list" Class="DsType" Type="Real" Deprecated="false">A list data structure</Constant>
		<Constant Name="ds_type_stack" Class="DsType" Type="Real" Deprecated="false">A stack data structure</Constant>
		<Constant Name="ds_type_grid" Class="DsType" Type="Real" Deprecated="false">A grid data structure</Constant>
		<Constant Name="ds_type_queue" Class="DsType" Type="Real" Deprecated="false">A queue data structure</Constant>
		<Constant Name="ds_type_priority" Class="DsType" Type="Real" Deprecated="false">A priority data structure</Constant>
		<Constant Name="c_aqua" Class="Color" Type="Real" Deprecated="false"> </Constant>
		<Constant Name="c_black" Class="Color" Type="Real" Deprecated="false"> </Constant>
		<Constant Name="c_blue" Class="Color" Type="Real" Deprecated="false"> </Constant>
		<Constant Name="c_dkgray" Class="Color" Type="Real" Deprecated="false"> </Constant>
		<Constant Name="c_fuchsia" Class="Color" Type="Real" Deprecated="false"> </Constant>
		<Constant Name="c_gray" Class="Color" Type="Real" Deprecated="false"> </Constant>
		<Constant Name="c_green" Class="Color" Type="Real" Deprecated="false"> </Constant>
		<Constant Name="c_lime" Class="Color" Type="Real" Deprecated="false"> </Constant>
		<Constant Name="c_ltgray" Class="Color" Type="Real" Deprecated="false"> </Constant>
		<Constant Name="c_maroon" Class="Color" Type="Real" Deprecated="false"> </Constant>
		<Constant Name="c_navy" Class="Color" Type="Real" Deprecated="false"> </Constant>
		<Constant Name="c_olive" Class="Color" Type="Real" Deprecated="false"> </Constant>
		<Constant Name="c_orange" Class="Color" Type="Real" Deprecated="false"> </Constant>
		<Constant Name="c_purple" Class="Color" Type="Real" Deprecated="false"> </Constant>
		<Constant Name="c_red" Class="Color" Type="Real" Deprecated="false"> </Constant>
		<Constant Name="c_silver" Class="Color" Type="Real" Deprecated="false"> </Constant>
		<Constant Name="c_teal" Class="Color" Type="Real" Deprecated="false"> </Constant>
		<Constant Name="c_white" Class="Color" Type="Real" Deprecated="false"> </Constant>
		<Constant Name="c_yellow" Class="Color" Type="Real" Deprecated="false"> </Constant>
		<Constant Name="bm_normal" Class="BlendMode" Type="Real" Deprecated="false">Normal blending (the default blend mode).</Constant>
		<Constant Name="bm_add" Class="BlendMode" Type="Real" Deprecated="false">Additive blending. Luminosity values of light areas are added.</Constant>
		<Constant Name="bm_subtract" Class="BlendMode" Type="Real" Deprecated="false">Subtractive blending. Luminosity values of light areas are subtracted.</Constant>
		<Constant Name="bm_max" Class="BlendMode" Type="Real" Deprecated="false">Max blending. Similar to additive blending.</Constant>
		<Constant Name="bm_zero" Class="BlendModeFactor" Type="Real" Deprecated="false">(0, 0, 0, 0)</Constant>
		<Constant Name="bm_one" Class="BlendModeFactor" Type="Real" Deprecated="false">(1, 1, 1, 1)</Constant>
		<Constant Name="bm_src_colour" Class="BlendModeFactor" Type="Real" Deprecated="false" Locale="GB">(Rs, Gs, Bs, As)</Constant>
		<Constant Name="bm_inv_src_colour" Class="BlendModeFactor" Type="Real" Deprecated="false" Locale="GB">(1-Rs, 1-Gs, 1-Bs, 1-As)</Constant>
		<Constant Name="bm_src_alpha" Class="BlendModeFactor" Type="Real" Deprecated="false">(As, As, As, As)</Constant>
		<Constant Name="bm_inv_src_alpha" Class="BlendModeFactor" Type="Real" Deprecated="false">(1-As, 1-As, 1-As, 1-As)</Constant>
		<Constant Name="bm_dest_alpha" Class="BlendModeFactor" Type="Real" Deprecated="false">(Ad, Ad, Ad, Ad)</Constant>
		<Constant Name="bm_inv_dest_alpha" Class="BlendModeFactor" Type="Real" Deprecated="false">(1-Ad, 1-Ad, 1-Ad, 1-Ad)</Constant>
		<Constant Name="bm_dest_colour" Class="BlendModeFactor" Type="Real" Deprecated="false" Locale="GB">(Rd, Gd, Bd, Ad)</Constant>
		<Constant Name="bm_inv_dest_colour" Class="BlendModeFactor" Type="Real" Deprecated="false" Locale="GB">(1-Rd, 1-Gd, 1-Bd, 1-Ad)</Constant>
		<Constant Name="bm_src_alpha_sat" Class="BlendModeFactor" Type="Real" Deprecated="false">(f, f, f, 1) where f = min(As, 1-Ad)</Constant>
		<Constant Name="cull_noculling" Class="CullMode" Type="Real" Deprecated="false">No culling will be done</Constant>
		<Constant Name="cull_clockwise" Class="CullMode" Type="Real" Deprecated="false">All clockwise triangles will be culled</Constant>
		<Constant Name="cull_counterclockwise" Class="CullMode" Type="Real" Deprecated="false">All counter-clockwise triangles will be culled</Constant>
		<Constant Name="lighttype_dir" Class="LightType" Type="Real" Deprecated="false">The light is a directional light</Constant>
		<Constant Name="lighttype_point" Class="LightType" Type="Real" Deprecated="false">The light is a point light</Constant>
		<Constant Name="mip_off" Type="Real" Deprecated="false">Mipmapping is disabled.</Constant>
		<Constant Name="mip_on" Type="Real" Deprecated="false">Mipmapping for all textures is enabled.</Constant>
		<Constant Name="mip_markedonly" Type="Real" Deprecated="false">Mipmapping is enabled for textures that have it enabled in the Texture Group options (default).</Constant>
		<Constant Name="tf_point" Type="Real" Deprecated="false">This means that blending between mipmap levels is disabled, which can cause visible texture transitions, but gives the best performance.</Constant>
		<Constant Name="tf_linear" Type="Real" Deprecated="false">This means that blending between mipmap levels is enabled (this is also known as trilinear filtering), which smooths the texture transitions, but it will give a minor hit to performance.</Constant>
		<Constant Name="tf_anisotropic" Type="Real" Deprecated="false">This means that anisotropic filtering is enabled, which greatly improves texture transition quality and can reduce the blurring visible with other filtering modes, but it has the highest hit on performance.</Constant>
		<Constant Name="ef_cloud" Class="EffectType" Type="Real" Deprecated="false"/>
		<Constant Name="ef_ellipse" Class="EffectType" Type="Real" Deprecated="false"/>
		<Constant Name="ef_explosion" Class="EffectType" Type="Real" Deprecated="false"/>
		<Constant Name="ef_firework" Class="EffectType" Type="Real" Deprecated="false"/>
		<Constant Name="ef_flare" Class="EffectType" Type="Real" Deprecated="false"/>
		<Constant Name="ef_rain" Class="EffectType" Type="Real" Deprecated="false"/>
		<Constant Name="ef_ring" Class="EffectType" Type="Real" Deprecated="false"/>
		<Constant Name="ef_smoke" Class="EffectType" Type="Real" Deprecated="false"/>
		<Constant Name="ef_smokeup" Class="EffectType" Type="Real" Deprecated="false"/>
		<Constant Name="ef_snow" Class="EffectType" Type="Real" Deprecated="false"/>
		<Constant Name="ef_spark" Class="EffectType" Type="Real" Deprecated="false"/>
		<Constant Name="ef_star" Class="EffectType" Type="Real" Deprecated="false"/>
		<Constant Name="ps_mode_stream" Class="ParticleEmitterMode" Type="Real" Deprecated="false">Emitter streams new particles each frame.</Constant>
		<Constant Name="ps_mode_burst" Class="ParticleEmitterMode" Type="Real" Deprecated="false">Emitter burst particles just once.</Constant>
		<Constant Name="ps_shape_rectangle" Class="ParticleRegionShape" Type="Real" Deprecated="false">A rectangular shape that fills the given area.</Constant>
		<Constant Name="ps_shape_ellipse" Class="ParticleRegionShape" Type="Real" Deprecated="false">An ellipse, with the width and height defined by the area.</Constant>
		<Constant Name="ps_shape_diamond" Class="ParticleRegionShape" Type="Real" Deprecated="false">A diamond shape with the points at half width and half height.</Constant>
		<Constant Name="ps_shape_line" Class="ParticleRegionShape" Type="Real" Deprecated="false">A single line, where the start point is the left and top and the end point is the right and bottom.</Constant>
		<Constant Name="ps_distr_linear" Class="ParticleDistribution" Type="Real" Deprecated="false">A Linear distribution where all particles have an equal chance of appearing anywhere in the area.</Constant>
		<Constant Name="ps_distr_gaussian" Class="ParticleDistribution" Type="Real" Deprecated="false">A gaussian distribution where more particles are generated in the center rather than the edges.</Constant>
		<Constant Name="ps_distr_invgaussian" Class="ParticleDistribution" Type="Real" Deprecated="false">An inverse gaussian distribution where more particles are generated at the edges than center.</Constant>
		<Constant Name="pt_shape_pixel" Class="ParticleShape" Type="Real" Deprecated="false">A 1x1 pixel. (This is the default setting.)</Constant>
		<Constant Name="pt_shape_disk" Class="ParticleShape" Type="Real" Deprecated="false">A filled circle.</Constant>
		<Constant Name="pt_shape_square" Class="ParticleShape" Type="Real" Deprecated="false">A filled square.</Constant>
		<Constant Name="pt_shape_line" Class="ParticleShape" Type="Real" Deprecated="false">An 8px wide horizontal line.</Constant>
		<Constant Name="pt_shape_star" Class="ParticleShape" Type="Real" Deprecated="false">A five-point filled star.</Constant>
		<Constant Name="pt_shape_circle" Class="ParticleShape" Type="Real" Deprecated="false">A 3px outlined circle.</Constant>
		<Constant Name="pt_shape_ring" Class="ParticleShape" Type="Real" Deprecated="false">A circle with an inward glow (looks like a bubble).</Constant>
		<Constant Name="pt_shape_sphere" Class="ParticleShape" Type="Real" Deprecated="false">A circle with an outward glow &apos; solid in the middle, glowing outwards.</Constant>
		<Constant Name="pt_shape_flare" Class="ParticleShape" Type="Real" Deprecated="false">A harshly glowing point (looks like an actual star in the night).</Constant>
		<Constant Name="pt_shape_spark" Class="ParticleShape" Type="Real" Deprecated="false">A spark effect &apos; like a star with multiple points fading out.</Constant>
		<Constant Name="pt_shape_explosion" Class="ParticleShape" Type="Real" Deprecated="false">A squarish cloud of smoke &apos; requires multiple colours to resemble an explosion.</Constant>
		<Constant Name="pt_shape_cloud" Class="ParticleShape" Type="Real" Deprecated="false">A thin cloud, requires up scaling and multiple particles to resemble a cloud.</Constant>
		<Constant Name="pt_shape_smoke" Class="ParticleShape" Type="Real" Deprecated="false">A smooth version of the explosion effect. Use multiple to create a smoke cloud.</Constant>
		<Constant Name="pt_shape_snow" Class="ParticleShape" Type="Real" Deprecated="false">A generic snowflake shape.</Constant>
		<Constant Name="vertex_type_float1" Class="VertexType" Type="Real" Deprecated="false">A single floating point value</Constant>
		<Constant Name="vertex_type_float2" Class="VertexType" Type="Real" Deprecated="false">Two floating point values</Constant>
		<Constant Name="vertex_type_float3" Class="VertexType" Type="Real" Deprecated="false">Three floating point values</Constant>
		<Constant Name="vertex_type_float4" Class="VertexType" Type="Real" Deprecated="false">Four floating point values</Constant>
		<Constant Name="vertex_type_colour" Class="VertexType" Type="Real" Deprecated="false" Locale="GB">Four component values (r, g, b, a)</Constant>
		<Constant Name="vertex_type_ubyte4" Class="VertexType" Type="Real" Deprecated="false">Four component unsigned byte values (from 0 to 255)</Constant>
		<Constant Name="vertex_usage_position" Class="VertexUsage" Type="Real" Deprecated="false">position values (x, y, z)</Constant>
		<Constant Name="vertex_usage_colour" Class="VertexUsage" Type="Real" Deprecated="false" Locale="GB">colour values (r, g, b, a)</Constant>
		<Constant Name="vertex_usage_normal" Class="VertexUsage" Type="Real" Deprecated="false">vertex normal values (nx, ny, nz)</Constant>
		<Constant Name="vertex_usage_textcoord" Class="VertexUsage" Type="Real" Deprecated="true">UV coordinates (u, v)</Constant>
		<Constant Name="vertex_usage_blendweight" Class="VertexUsage" Type="Real" Deprecated="false">the blendweight of the input matrix (for skeletal animation, for example)</Constant>
		<Constant Name="vertex_usage_blendindices" Class="VertexUsage" Type="Real" Deprecated="false">the indices of the matrices to use (for skeletal animation, for example)</Constant>
		<Constant Name="vertex_usage_depth" Class="VertexUsage" Type="Real" Deprecated="false">vertex depth buffer value</Constant>
		<Constant Name="vertex_usage_tangent" Class="VertexUsage" Type="Real" Deprecated="false">tangent values</Constant>
		<Constant Name="vertex_usage_binormal" Class="VertexUsage" Type="Real" Deprecated="false">binormal values</Constant>
		<Constant Name="vertex_usage_fog" Class="VertexUsage" Type="Real" Deprecated="false">fog values</Constant>
		<Constant Name="vertex_usage_sample" Class="VertexUsage" Type="Real" Deprecated="false">sampler index</Constant>
		<Constant Name="pr_pointlist" Class="PrimitiveType" Type="Real" Deprecated="false">A primitive consisting of a list of points.</Constant>
		<Constant Name="pr_linelist" Class="PrimitiveType" Type="Real" Deprecated="false">A primitive made up of a individual lines in a list.</Constant>
		<Constant Name="pr_linestrip" Class="PrimitiveType" Type="Real" Deprecated="false">A primitive made up of a consecutive strip of lines.</Constant>
		<Constant Name="pr_trianglelist" Class="PrimitiveType" Type="Real" Deprecated="false">A primitive made up of individual triangles in a list.</Constant>
		<Constant Name="pr_trianglestrip" Class="PrimitiveType" Type="Real" Deprecated="false">A primitive made up of a consecutive strip of triangles.</Constant>
		<Constant Name="fa_left" Class="HAlign" Type="Real" Deprecated="false"/>
		<Constant Name="fa_center" Class="HAlign" Type="Real" Deprecated="false"/>
		<Constant Name="fa_right" Class="HAlign" Type="Real" Deprecated="false"/>
		<Constant Name="fa_top" Class="VAlign" Type="Real" Deprecated="false"/>
		<Constant Name="fa_middle" Class="VAlign" Type="Real" Deprecated="false"/>
		<Constant Name="fa_bottom" Class="VAlign" Type="Real" Deprecated="false"/>
		<Constant Name="fa_none" Class="FileAttribute" Type="Real" Deprecated="false">No file filter</Constant>
		<Constant Name="fa_readonly" Class="FileAttribute" Type="Real" Deprecated="false">Read-only files</Constant>
		<Constant Name="fa_hidden" Class="FileAttribute" Type="Real" Deprecated="false">Hidden files</Constant>
		<Constant Name="fa_sysfile" Class="FileAttribute" Type="Real" Deprecated="false">System files</Constant>
		<Constant Name="fa_volumeid" Class="FileAttribute" Type="Real" Deprecated="false">Volume-id files</Constant>
		<Constant Name="fa_directory" Class="FileAttribute" Type="Real" Deprecated="false">Directories</Constant>
		<Constant Name="fa_archive" Class="FileAttribute" Type="Real" Deprecated="false">Archived files</Constant>
		<Constant Name="mb_left" Class="MouseButton" Type="Real" Deprecated="false">The left mouse button</Constant>
		<Constant Name="mb_middle" Class="MouseButton" Type="Real" Deprecated="false">The middle mouse button (this may not be valid for all target platforms)</Constant>
		<Constant Name="mb_right" Class="MouseButton" Type="Real" Deprecated="false">The right mouse button</Constant>
		<Constant Name="mb_side1" Class="MouseButton" Type="Real" Deprecated="false">Mouse side button 1</Constant>
		<Constant Name="mb_side2" Class="MouseButton" Type="Real" Deprecated="false">Mouse side button 2</Constant>
		<Constant Name="mb_any" Class="MouseButton" Type="Real" Deprecated="false">Any of the mouse buttons</Constant>
		<Constant Name="mb_none" Class="MouseButton" Type="Real" Deprecated="false">No mouse button</Constant>
		<Constant Name="m_axisx" Class="MouseButton" Type="Real" Deprecated="false">Mouse x-axis position in room coordinates</Constant>
		<Constant Name="m_axisy" Class="MouseButton" Type="Real" Deprecated="false">Mouse y-axis position in room coordinates</Constant>
		<Constant Name="m_axisx_gui" Class="MouseButton" Type="Real" Deprecated="false">Mouse x-axis position in GUI coordinates</Constant>
		<Constant Name="m_axisy_gui" Class="MouseButton" Type="Real" Deprecated="false">Mouse y-axis position in GUI coordinates</Constant>
		<Constant Name="m_scroll_up" Class="MouseButton" Type="Real" Deprecated="false">Mouse scroll direction up</Constant>
		<Constant Name="m_scroll_down" Class="MouseButton" Type="Real" Deprecated="false">Mouse scroll direction down</Constant>
		<Constant Name="gp_face1" Class="GamepadButton" Type="Real" Deprecated="false">Top button 1 (this maps to the &quot;A&quot; on an Xbox 360 controller and the cross on a PS controller)</Constant>
		<Constant Name="gp_face2" Class="GamepadButton" Type="Real" Deprecated="false">Top button 2 (this maps to the &quot;B&quot; on an Xbox 360 controller and the circle on a PS controller)</Constant>
		<Constant Name="gp_face3" Class="GamepadButton" Type="Real" Deprecated="false">Top button 3 (this maps to the &quot;X&quot; on an Xbox 360 controller and the square on a PS controller)</Constant>
		<Constant Name="gp_face4" Class="GamepadButton" Type="Real" Deprecated="false">Top button 4 (this maps to the &quot;Y&quot; on an Xbox 360 controller and the triangle on a PS controller)</Constant>
		<Constant Name="gp_shoulderl" Class="GamepadButton" Type="Real" Deprecated="false">Left shoulder button</Constant>
		<Constant Name="gp_shoulderlb" Class="GamepadButton" Type="Real" Deprecated="false">Left shoulder trigger</Constant>
		<Constant Name="gp_shoulderr" Class="GamepadButton" Type="Real" Deprecated="false">Right shoulder button</Constant>
		<Constant Name="gp_shoulderrb" Class="GamepadButton" Type="Real" Deprecated="false">Right shoulder trigger</Constant>
		<Constant Name="gp_select" Class="GamepadButton" Type="Real" Deprecated="false">The select button (on a DS4 controller, this triggers when you press the touchpad down)</Constant>
		<Constant Name="gp_start" Class="GamepadButton" Type="Real" Deprecated="false">The start button (this is the &quot;options&quot; button on a PS4 controller)</Constant>
		<Constant Name="gp_stickl" Class="GamepadButton" Type="Real" Deprecated="false">The left stick pressed (as a button)</Constant>
		<Constant Name="gp_stickr" Class="GamepadButton" Type="Real" Deprecated="false">The right stick pressed (as a button)</Constant>
		<Constant Name="gp_padu" Class="GamepadButton" Type="Real" Deprecated="false">D-pad up</Constant>
		<Constant Name="gp_padd" Class="GamepadButton" Type="Real" Deprecated="false">D-pad down</Constant>
		<Constant Name="gp_padl" Class="GamepadButton" Type="Real" Deprecated="false">D-pad left</Constant>
		<Constant Name="gp_padr" Class="GamepadButton" Type="Real" Deprecated="false">D-pad right</Constant>
		<Constant Name="gp_axislh" Class="GamepadAxis" Type="Real" Deprecated="false">Left stick horizontal axis (analog)</Constant>
		<Constant Name="gp_axislv" Class="GamepadAxis" Type="Real" Deprecated="false">Left stick vertical axis (analog)</Constant>
		<Constant Name="gp_axisrh" Class="GamepadAxis" Type="Real" Deprecated="false">Right stick horizontal axis (analog)</Constant>
		<Constant Name="gp_axisrv" Class="GamepadAxis" Type="Real" Deprecated="false">Right stick vertical axis (analog)</Constant>
		<Constant Name="gp_axis_acceleration_x" Class="GamepadAxis" Type="Real" Deprecated="false">The gamepad&apos;s acceleration on the X axis</Constant>
		<Constant Name="gp_axis_acceleration_y" Class="GamepadAxis" Type="Real" Deprecated="false">The gamepad&apos;s acceleration on the Y axis</Constant>
		<Constant Name="gp_axis_acceleration_z" Class="GamepadAxis" Type="Real" Deprecated="false">The gamepad&apos;s acceleration on the Z axis</Constant>
		<Constant Name="gp_axis_angular_velocity_x" Class="GamepadAxis" Type="Real" Deprecated="false">The gamepad&apos;s angular velocity on the X axis</Constant>
		<Constant Name="gp_axis_angular_velocity_y" Class="GamepadAxis" Type="Real" Deprecated="false">The gamepad&apos;s angular velocity on the Y axis</Constant>
		<Constant Name="gp_axis_angular_velocity_z" Class="GamepadAxis" Type="Real" Deprecated="false">The gamepad&apos;s angular velocity on the Z axis</Constant>
		<Constant Name="gp_axis_orientation_x" Class="GamepadAxis" Type="Real" Deprecated="false">The gamepad&apos;s X orientation</Constant>
		<Constant Name="gp_axis_orientation_y" Class="GamepadAxis" Type="Real" Deprecated="false">The gamepad&apos;s Y orientation</Constant>
		<Constant Name="gp_axis_orientation_z" Class="GamepadAxis" Type="Real" Deprecated="false">The gamepad&apos;s Z orientation</Constant>
		<Constant Name="gp_axis_orientation_w" Class="GamepadAxis" Type="Real" Deprecated="false">The gamepad&apos;s W orientation</Constant>
		<Constant Name="vk_nokey" Class="VirtualKey" Type="Real" Deprecated="false">keycode representing that no key is pressed</Constant>
		<Constant Name="vk_anykey" Class="VirtualKey" Type="Real" Deprecated="false">keycode representing that any key is pressed</Constant>
		<Constant Name="vk_left" Class="VirtualKey" Type="Real" Deprecated="false">keycode for the left arrow key</Constant>
		<Constant Name="vk_right" Class="VirtualKey" Type="Real" Deprecated="false">keycode for the right arrow key</Constant>
		<Constant Name="vk_up" Class="VirtualKey" Type="Real" Deprecated="false">keycode for the up arrow key</Constant>
		<Constant Name="vk_down" Class="VirtualKey" Type="Real" Deprecated="false">keycode for the down arrow key</Constant>
		<Constant Name="vk_enter" Class="VirtualKey" Type="Real" Deprecated="false">enter key</Constant>
		<Constant Name="vk_escape" Class="VirtualKey" Type="Real" Deprecated="false">escape key</Constant>
		<Constant Name="vk_space" Class="VirtualKey" Type="Real" Deprecated="false">space key</Constant>
		<Constant Name="vk_shift" Class="VirtualKey" Type="Real" Deprecated="false">either of the shift keys</Constant>
		<Constant Name="vk_control" Class="VirtualKey" Type="Real" Deprecated="false">either of the control keys</Constant>
		<Constant Name="vk_alt" Class="VirtualKey" Type="Real" Deprecated="false">alt key</Constant>
		<Constant Name="vk_backspace" Class="VirtualKey" Type="Real" Deprecated="false">backspace key</Constant>
		<Constant Name="vk_tab" Class="VirtualKey" Type="Real" Deprecated="false">tab key</Constant>
		<Constant Name="vk_home" Class="VirtualKey" Type="Real" Deprecated="false">home key</Constant>
		<Constant Name="vk_end" Class="VirtualKey" Type="Real" Deprecated="false">end key</Constant>
		<Constant Name="vk_delete" Class="VirtualKey" Type="Real" Deprecated="false">delete key</Constant>
		<Constant Name="vk_insert" Class="VirtualKey" Type="Real" Deprecated="false">insert key</Constant>
		<Constant Name="vk_pageup" Class="VirtualKey" Type="Real" Deprecated="false">pageup key</Constant>
		<Constant Name="vk_pagedown" Class="VirtualKey" Type="Real" Deprecated="false">pagedown key</Constant>
		<Constant Name="vk_pause" Class="VirtualKey" Type="Real" Deprecated="false">pause/break key</Constant>
		<Constant Name="vk_printscreen" Class="VirtualKey" Type="Real" Deprecated="false">printscreen/sysrq key</Constant>
		<Constant Name="vk_f1" Class="VirtualKey" Type="Real" Deprecated="false">keycode for the function keys F1 to F12</Constant>
		<Constant Name="vk_numpad0" Class="VirtualKey" Type="Real" Deprecated="false">number keys on the numeric keypad</Constant>
		<Constant Name="vk_multiply" Class="VirtualKey" Type="Real" Deprecated="false">multiply key on the numeric keypad</Constant>
		<Constant Name="vk_divide" Class="VirtualKey" Type="Real" Deprecated="false">divide key on the numeric keypad</Constant>
		<Constant Name="vk_add" Class="VirtualKey" Type="Real" Deprecated="false">add key on the numeric keypad</Constant>
		<Constant Name="vk_subtract" Class="VirtualKey" Type="Real" Deprecated="false">subtract key on the numeric keypad</Constant>
		<Constant Name="vk_decimal" Class="VirtualKey" Type="Real" Deprecated="false">decimal dot keys on the numeric keypad</Constant>
		<Constant Name="vk_lshift" Class="VirtualKey" Type="Real" Deprecated="false">left shift key</Constant>
		<Constant Name="vk_lcontrol" Class="VirtualKey" Type="Real" Deprecated="false">left control key</Constant>
		<Constant Name="vk_lalt" Class="VirtualKey" Type="Real" Deprecated="false">left alt key</Constant>
		<Constant Name="vk_rshift" Class="VirtualKey" Type="Real" Deprecated="false">right shift key</Constant>
		<Constant Name="vk_rcontrol" Class="VirtualKey" Type="Real" Deprecated="false">right control key</Constant>
		<Constant Name="vk_ralt" Class="VirtualKey" Type="Real" Deprecated="false">right alt key</Constant>
		<Constant Name="gamespeed_fps" Class="GameSpeed" Type="Real" Deprecated="false">Gets the game speed using frames per second.</Constant>
		<Constant Name="gamespeed_microseconds" Class="GameSpeed" Type="Real" Deprecated="false">Gets the game speed using microseconds per frame.</Constant>
		<Constant Name="true" Type="Bool" Deprecated="false">1 (although any value equal to or greater than 1 will evaluate as true)</Constant>
		<Constant Name="false" Type="Bool" Deprecated="false">0 (although any value less than 1 will also evaluate as false)</Constant>
		<Constant Name="pi" Type="Real" Deprecated="false">3.141592653589793280etc... (the exact value will depend on various factors like the platform being targeted)</Constant>
		<Constant Name="timezone_local" Type="Real" Deprecated="false">use the local time zone as set by the system</Constant>
		<Constant Name="timezone_utc" Type="Real" Deprecated="false">use Coordinated Universal Time</Constant>
		<Constant Name="matrix_view" Class="MatrixType" Type="Real" Deprecated="false">The current view matrix</Constant>
		<Constant Name="matrix_projection" Class="MatrixType" Type="Real" Deprecated="false">The current projection matrix</Constant>
		<Constant Name="matrix_world" Class="MatrixType" Type="Real" Deprecated="false">The current world matrix</Constant>
		<Constant Name="network_socket_tcp" Class="SocketType" Type="Real" Deprecated="false">Create a socket using TCP.</Constant>
		<Constant Name="network_socket_udp" Class="SocketType" Type="Real" Deprecated="false">Create a socket using UDP.</Constant>
		<Constant Name="network_socket_ws" Class="SocketType" Type="Real" Deprecated="false">Create a web socket (only for connecting to HTML5 projects), using TCP.</Constant>
		<Constant Name="network_socket_bluetooth" Class="SocketType" Type="Real" Deprecated="false">Create a Bluetooth socket (currently unavailable!).</Constant>
		<Constant Name="network_config_connect_timeout" Class="NetworkConfig" Type="Real" Deprecated="false">Set a connection timeout value</Constant>
		<Constant Name="network_config_use_non_blocking_socket" Class="NetworkConfig" Type="Real" Deprecated="false">Tell GameMaker not to block on connect.</Constant>
		<Constant Name="network_config_enable_reliable_udp" Class="NetworkConfig" Type="Real" Deprecated="false">Enables the &quot;reliable UDP&quot; protocol for an existing UDP socket</Constant>
		<Constant Name="network_config_disable_reliable_udp" Class="NetworkConfig" Type="Real" Deprecated="false">Disables the &quot;reliable UDP&quot; protocol for an existing UDP socked.</Constant>
		<Constant Name="network_config_avoid_time_wait" Class="NetworkConfig" Type="Real" Deprecated="false">Sets the SO_LINGER timeout value to 0 for an exisiting TCP socket</Constant>
		<Constant Name="network_config_websocket_protocol" Class="NetworkConfig" Type="Real" Deprecated="false">Set the protocol to use on websocket upgrade message, protocol is a string as 3rd parameter</Constant>
        <Constant Name="network_send_binary" Class="SendOption" Type="Real" Deprecated="false">Send a BINARY message over WeSocket</Constant>
        <Constant Name="network_send_text" Class="SendOption" Type="Real" Deprecated="false">Send a TEXT message over WebSocket</Constant>
		<Constant Name="dll_cdecl" Class="ExternalCallType" Type="Real" Deprecated="false">This is the default C, C++ call</Constant>
		<Constant Name="dll_stdcall" Class="ExternalCallType" Type="Real" Deprecated="false">This is the standard WinAPI call (Windows dll only)</Constant>
		<Constant Name="ty_real" Class="ExternalArgumentType" Type="Real" Deprecated="false">A real number argument</Constant>
		<Constant Name="ty_string" Class="ExternalArgumentType" Type="Real" Deprecated="false">a null-terminated string argument</Constant>
		<Constant Name="browser_not_a_browser" Class="BrowserType" Type="Real" Deprecated="false">Game is not being played in a browser</Constant>
		<Constant Name="browser_unknown" Class="BrowserType" Type="Real" Deprecated="false">Unknown browser</Constant>
		<Constant Name="browser_ie" Class="BrowserType" Type="Real" Deprecated="false">Internet Explorer</Constant>
		<Constant Name="browser_ie_mobile" Class="BrowserType" Type="Real" Deprecated="false">Internet Explorer on a mobile device</Constant>
		<Constant Name="browser_firefox" Class="BrowserType" Type="Real" Deprecated="false">Mozilla Firefox</Constant>
		<Constant Name="browser_chrome" Class="BrowserType" Type="Real" Deprecated="false">Google Chrome</Constant>
		<Constant Name="browser_safari" Class="BrowserType" Type="Real" Deprecated="false">Safari</Constant>
		<Constant Name="browser_safari_mobile" Class="BrowserType" Type="Real" Deprecated="false">Safari on a mobile device</Constant>
		<Constant Name="browser_opera" Class="BrowserType" Type="Real" Deprecated="false">Opera</Constant>
		<Constant Name="browser_tizen" Class="BrowserType" Type="Real" Deprecated="false">Tizen mobile device browser</Constant>
		<Constant Name="browser_windows_store" Class="BrowserType" Type="Real" Deprecated="false">Windows App</Constant>
		<Constant Name="os_permission_granted" Type="Real" Deprecated="false">This indicates that the permission has been granted</Constant>
		<Constant Name="os_permission_denied" Type="Real" Deprecated="false">This indicates that the permission has not been granted</Constant>
		<Constant Name="os_permission_denied_dont_request" Type="Real" Deprecated="false">This indicates that the permission has either been blocked by the phone settings, or that the user has previously denied the request and selected &quot;Don&apos;t ask again&quot;.</Constant>
		<Constant Name="device_ios_ipad" Class="DeviceType" Type="Real" Deprecated="false">iPad</Constant>
		<Constant Name="device_ios_ipad_retina" Class="DeviceType" Type="Real" Deprecated="false">Newer iPad with Retina display size of 2048 x 1536</Constant>
		<Constant Name="device_ios_iphone6" Class="DeviceType" Type="Real" Deprecated="false">iPhone6 with display size 1334 x 750</Constant>
		<Constant Name="device_ios_iphone6plus" Class="DeviceType" Type="Real" Deprecated="false">Larger iPhone 6 with display 1920 x 1080</Constant>
		<Constant Name="device_ios_iphone5" Class="DeviceType" Type="Real" Deprecated="false">iPhone5 with display size 640 x 1136)</Constant>
		<Constant Name="device_ios_iphone" Class="DeviceType" Type="Real" Deprecated="false">Older iPhone/iPod Touch (480 x 320 screen) or Android phone</Constant>
		<Constant Name="device_ios_iphone_retina" Class="DeviceType" Type="Real" Deprecated="false">Newer iPhone/iPod Touch with Retina display of 960 x 640</Constant>
		<Constant Name="device_emulator" Class="DeviceType" Type="Real" Deprecated="false">The device is actually an emulator (Windows Phone or Android)</Constant>
		<Constant Name="device_tablet" Class="DeviceType" Type="Real" Deprecated="false">Android tablet</Constant>
		<Constant Name="device_ios_unknown" Class="DeviceType" Type="Real" Deprecated="false">Unknown or not iOS</Constant>
		<Constant Name="os_windows" Class="OperatingSystem" Type="Real" Deprecated="false">Windows OS</Constant>
		<Constant Name="os_uwp" Class="OperatingSystem" Type="Real" Deprecated="false">Windows 10 Universal Windows Platform</Constant>
		<Constant Name="os_linux" Class="OperatingSystem" Type="Real" Deprecated="false">Linux</Constant>
		<Constant Name="os_macosx" Class="OperatingSystem" Type="Real" Deprecated="false">macOS X</Constant>
		<Constant Name="os_ios" Class="OperatingSystem" Type="Real" Deprecated="false">iOS (iPhone, iPad, iPod Touch)</Constant>
		<Constant Name="os_tvos" Class="OperatingSystem" Type="Real" Deprecated="false">Apple tvOS</Constant>
		<Constant Name="os_android" Class="OperatingSystem" Type="Real" Deprecated="false">Android</Constant>
		<Constant Name="os_ps4" Class="OperatingSystem" Type="Real" Deprecated="false">Sony PlayStation 4</Constant>
		<Constant Name="os_ps5" Class="OperatingSystem" Type="Real" Deprecated="false">Sony PlayStation 5</Constant>
		<Constant Name="os_xboxone" Class="OperatingSystem" Type="Real" Deprecated="false">Microsoft Xbox One</Constant>
		<Constant Name="os_xboxseriesxs" Class="OperatingSystem" Type="Real" Deprecated="false">Microsoft Xbox Series X/S</Constant>
		<Constant Name="os_gdk" Class="OperatingSystem" Type="Real" Deprecated="false">Microsoft GDK platform (Xbox One and Series X/S)</Constant>
		<Constant Name="os_switch" Class="OperatingSystem" Type="Real" Deprecated="false">Nintendo Switch</Constant>
		<Constant Name="os_operagx" Class="OperatingSystem" Type="Real" Deprecated="false">Opera GX</Constant>
		<Constant Name="os_gxgames" Class="OperatingSystem" Type="Real" Deprecated="false">GX.games</Constant>
		<Constant Name="os_unknown" Class="OperatingSystem" Type="Real" Deprecated="false">Unknown OS</Constant>
		<Constant Name="phy_joint_anchor_1_x" Class="PhysicsJointProperty" Type="Real" Deprecated="false">The x coordinate of the first anchor point of the joint in the room</Constant>
		<Constant Name="phy_joint_anchor_1_y" Class="PhysicsJointProperty" Type="Real" Deprecated="false">The y coordinate of the first anchor point of the joint in the room</Constant>
		<Constant Name="phy_joint_anchor_2_x" Class="PhysicsJointProperty" Type="Real" Deprecated="false">The x coordinate of the second anchor point of the joint in the room</Constant>
		<Constant Name="phy_joint_anchor_2_y" Class="PhysicsJointProperty" Type="Real" Deprecated="false">The y coordinate of the second anchor point of the joint in the room</Constant>
		<Constant Name="phy_joint_reaction_force_x" Class="PhysicsJointProperty" Type="Real" Deprecated="false">This is the reaction force being applied to the second instance in a joint at the x anchor position</Constant>
		<Constant Name="phy_joint_reaction_force_y" Class="PhysicsJointProperty" Type="Real" Deprecated="false">This is the reaction force being applied to the second instance in a joint at the y anchor position</Constant>
		<Constant Name="phy_joint_reaction_torque" Class="PhysicsJointProperty" Type="Real" Deprecated="false">This is the torque being applied to the second instance in a joint at the anchor position</Constant>
		<Constant Name="phy_joint_max_motor_force" Class="PhysicsJointProperty" Type="Real" Deprecated="false">The value specified when the joint was created for the maximum motor force</Constant>
		<Constant Name="phy_joint_max_motor_torque" Class="PhysicsJointProperty" Type="Real" Deprecated="false">The value specified when the joint was created for the maximum motor torque</Constant>
		<Constant Name="phy_joint_motor_force" Class="PhysicsJointProperty" Type="Real" Deprecated="false">The current motor force</Constant>
		<Constant Name="phy_joint_motor_speed" Class="PhysicsJointProperty" Type="Real" Deprecated="false">The current motor speed</Constant>
		<Constant Name="phy_joint_motor_torque" Class="PhysicsJointProperty" Type="Real" Deprecated="false">The current motor torque</Constant>
		<Constant Name="phy_joint_angle" Class="PhysicsJointProperty" Type="Real" Deprecated="false">The angle that a line between the two anchor points of the joint makes. This is calculated using the physics world coordinates ( not the GameMaker room 			   coordinates) in radians.</Constant>
		<Constant Name="phy_joint_angle_limits" Class="PhysicsJointProperty" Type="Real" Deprecated="false">Enable or disable angle limiting for the joint. Set the value to true to enable or false to disable.</Constant>
		<Constant Name="phy_joint_upper_angle_limit" Class="PhysicsJointProperty" Type="Real" Deprecated="false">The upper angle limit for the joint in degrees.</Constant>
		<Constant Name="phy_joint_lower_angle_limit" Class="PhysicsJointProperty" Type="Real" Deprecated="false">The lower angle limit for the joint in degrees.</Constant>
		<Constant Name="phy_joint_translation" Class="PhysicsJointProperty" Type="Real" Deprecated="false">Gets the distance between the anchor x/y coordinates and the local x/y coordinates.</Constant>
		<Constant Name="phy_joint_speed" Class="PhysicsJointProperty" Type="Real" Deprecated="false">The current joint movement speed.</Constant>
		<Constant Name="phy_joint_damping_ratio" Class="PhysicsJointProperty"  Type="Real" Deprecated="false">The damping ratio is non-dimensional and defines the &quot;springiness&quot; of the joint. The value for this constant is typically between 0 and 1, but can be larger, and at 1, the damping is critical meaning that all oscillations should vanish.</Constant>
		<Constant Name="phy_joint_frequency" Class="PhysicsJointProperty" Type="Real" Deprecated="false">This will return (or set) the oscillation frequency for the joint, in hertz, and typically the frequency should be less than a half the frequency of the time step, as set by the function physics_world_update_speed().</Constant>
		<Constant Name="phy_joint_length_1" Class="PhysicsJointProperty" Type="Real" Deprecated="false">This will return the length of the joint from the first local x/y coordinates to the first anchor x/y coordinates (Distance joints only, can only be read from)</Constant>
		<Constant Name="phy_joint_length_2" Class="PhysicsJointProperty" Type="Real" Deprecated="false">This will return the length of the joint from the second local x/y coordinates to the second anchor x/y coordinates (Distance joints only, can only be written to)</Constant>
		<Constant Name="phy_joint_max_torque" Class="PhysicsJointProperty" Type="Real" Deprecated="false">The maximum torque value for the joint.</Constant>
		<Constant Name="phy_joint_max_force" Class="PhysicsJointProperty" Type="Real" Deprecated="false">The maximum force value for the joint.</Constant>
		<Constant Name="phy_joint_max_length" Class="PhysicsJointProperty" Type="Real" Deprecated="false">The maximum extension for the connection between the two anchor points.</Constant>
		<Constant Name="phy_particle_flag_water" Class="PhysicsParticleFlag" Type="Real" Deprecated="false">The default properties for a soft body particle.</Constant>
		<Constant Name="phy_particle_flag_zombie" Class="PhysicsParticleFlag" Type="Real" Deprecated="false">A zombie particle is one that will be destroyed after a single step with all others flagged in this way.</Constant>
		<Constant Name="phy_particle_flag_wall" Class="PhysicsParticleFlag" Type="Real" Deprecated="false">This defines the particle as static, essentially creating it as an immovable object in the physics simulation, as they will remain in a fixed position no matter what collides with them. You should use this flag rather than set the density 			 to 0.</Constant>
		<Constant Name="phy_particle_flag_spring" Class="PhysicsParticleFlag" Type="Real" Deprecated="false">Spring particles produce the effect of being attached to one another, as if by a spring. Particles created with this flag are &quot;connected&quot; in pairs, with each particle being connected to the one that was closest to it at the time of creation. 			 Once paired, particles do not change &quot;partners&quot; , and the farther an external force pulls them from one another, the greater the power with which they will collide when that external force is removed. Note that no matter how far paired 			 particles get from each another, the connection between them will not snap.</Constant>
		<Constant Name="phy_particle_flag_elastic" Class="PhysicsParticleFlag" Type="Real" Deprecated="false">Elastic particles deform and may also bounce when they collide with other rigid bodies in the physics simulation.</Constant>
		<Constant Name="phy_particle_flag_viscous" Class="PhysicsParticleFlag" Type="Real" Deprecated="false">A viscous particle is one that exhibits &quot;clinginess&quot; or &quot;stickiness&quot;, like oil. Viscous particles will clump and stick together more.</Constant>
		<Constant Name="phy_particle_flag_powder" Class="PhysicsParticleFlag" Type="Real" Deprecated="false">Powder particles produce a scattering effect such as you might see with sand or dust.</Constant>
		<Constant Name="phy_particle_flag_tensile" Class="PhysicsParticleFlag" Type="Real" Deprecated="false">Tensile particles are used to produce the effect of surface tension, or the taut curvature on the surface of a body of liquid. They might be used, for example, to create the surface tension you would see on a drop of water. Once the tension is 			 broken, the particles bounce as if they were elastic, but also continue to attract each other. As a result, particles tend to form clusters as they bounce.</Constant>
		<Constant Name="phy_particle_flag_colourmixing" Class="PhysicsParticleFlag" Type="Real" Deprecated="false" Locale="GB">Colour-mixing particles take on some of the colour of other particles with which they collide. Note that if only one of the two colliding particles is a colour-mixing one, the other particle retains its pre-collision colour.</Constant>
		<Constant Name="phy_particle_data_flag_typeflags" Class="PhysicsParticleDataFlag" Type="Real" Deprecated="false">The flags value for the particle.</Constant>
		<Constant Name="phy_particle_data_flag_position" Class="PhysicsParticleDataFlag" Type="Real" Deprecated="false">The x and y position of the particle.</Constant>
		<Constant Name="phy_particle_data_flag_velocity" Class="PhysicsParticleDataFlag" Type="Real" Deprecated="false">The horizontal and vertical speed.</Constant>
		<Constant Name="phy_particle_data_flag_colour" Class="PhysicsParticleDataFlag" Type="Real" Deprecated="false" Locale="GB">The colour and alpha value (hexadecimal).</Constant>
		<Constant Name="phy_particle_data_flag_category" Class="PhysicsParticleDataFlag" Type="Real" Deprecated="false">The particle category (as defined when you created the particle or group to which it belongs).</Constant>
		<Constant Name="phy_particle_group_flag_solid" Class="PhysicsParticleGroupFlag" Type="Real" Deprecated="false">A solid particle group prevents other fixtures from lodging inside of it. Should anything penetrate it, the solid particle group pushes the offending fixture back out to its surface, making a a solid particle group possess an especially strong 			 repulsive force.</Constant>
		<Constant Name="phy_particle_group_flag_rigid" Class="PhysicsParticleGroupFlag" Type="Real" Deprecated="false">Rigid particle groups are ones whose shape does not change, even when they collide with other fixtures.</Constant>
		<Constant Name="self" Type="Id.Instance" Deprecated="false" />
		<Constant Name="other" Type="Id.Instance" Deprecated="false" />
		<Constant Name="all" Type="Id.Instance" Class="All" Deprecated="false" />
		<Constant Name="noone" Type="Id.Instance" Deprecated="false" />
		<Constant Name="global" Type="Real" Deprecated="false" />
		<Constant Name="undefined" Type="Undefined" Deprecated="false" />
		<Constant Name="pointer_invalid" Type="Pointer" Deprecated="false" />
		<Constant Name="pointer_null" Type="Pointer" Deprecated="false" />
		<Constant Name="NaN" Type="Real" Deprecated="false" />
		<Constant Name="infinity" Type="Real" Deprecated="false" />
		<Constant Name="GM_build_date" Type="Real" Deprecated="false" />
		<Constant Name="GM_version" Type="String" Deprecated="false" />
		<Constant Name="GM_runtime_version" Type="String" Deprecated="false" />
		<Constant Name="GM_project_filename" Type="String" Deprecated="false">full path and filename of the YYP project</Constant>
		<Constant Name="GM_build_type" Type="String" Deprecated="false">compile time constant of current build type either "exe" (for create executable) or "run" (for a run)</Constant>
		<Constant Name="_GM_LINE_" Type="Real" Deprecated="false">compile time constant that returns the current line number</Constant>
		<Constant Name="_GM_FUNCTION_" Type="String" Deprecated="false">compile time constant that returns the current function name</Constant>
		<Constant Name="_GM_FILE_" Type="String" Deprecated="false">compile time constant that returns the current filename</Constant>
		<Constant Name="ev_keypress" Class="EventType" Type="Real" Deprecated="false" />
		<Constant Name="ev_keyrelease" Class="EventType" Type="Real" Deprecated="false" />
		<Constant Name="ev_trigger" Class="EventType" Type="Real" Deprecated="true" />

		<Constant Name="ev_joystick1_left" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_joystick1_right" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_joystick1_up" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_joystick1_down" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_joystick1_button1" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_joystick1_button2" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_joystick1_button3" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_joystick1_button4" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_joystick1_button5" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_joystick1_button6" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_joystick1_button7" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_joystick1_button8" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_joystick2_left" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_joystick2_right" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_joystick2_up" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_joystick2_down" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_joystick2_button1" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_joystick2_button2" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_joystick2_button3" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_joystick2_button4" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_joystick2_button5" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_joystick2_button6" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_joystick2_button7" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_joystick2_button8" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_no_more_lives" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_no_more_health" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_user1" Class="EventNumber" Type="Real" Deprecated="false" />
		<Constant Name="ev_user2" Class="EventNumber" Type="Real" Deprecated="false" />
		<Constant Name="ev_user3" Class="EventNumber" Type="Real" Deprecated="false" />
		<Constant Name="ev_user4" Class="EventNumber" Type="Real" Deprecated="false" />
		<Constant Name="ev_user5" Class="EventNumber" Type="Real" Deprecated="false" />
		<Constant Name="ev_user6" Class="EventNumber" Type="Real" Deprecated="false" />
		<Constant Name="ev_user7" Class="EventNumber" Type="Real" Deprecated="false" />
		<Constant Name="ev_user8" Class="EventNumber" Type="Real" Deprecated="false" />
		<Constant Name="ev_user9" Class="EventNumber" Type="Real" Deprecated="false" />
		<Constant Name="ev_user10" Class="EventNumber" Type="Real" Deprecated="false" />
		<Constant Name="ev_user11" Class="EventNumber" Type="Real" Deprecated="false" />
		<Constant Name="ev_user12" Class="EventNumber" Type="Real" Deprecated="false" />
		<Constant Name="ev_user13" Class="EventNumber" Type="Real" Deprecated="false" />
		<Constant Name="ev_user14" Class="EventNumber" Type="Real" Deprecated="false" />
		<Constant Name="ev_user15" Class="EventNumber" Type="Real" Deprecated="false" />
		<Constant Name="ev_outside_view1" Class="EventNumber" Type="Real" Deprecated="false" />
		<Constant Name="ev_outside_view2" Class="EventNumber" Type="Real" Deprecated="false" />
		<Constant Name="ev_outside_view3" Class="EventNumber" Type="Real" Deprecated="false" />
		<Constant Name="ev_outside_view4" Class="EventNumber" Type="Real" Deprecated="false" />
		<Constant Name="ev_outside_view5" Class="EventNumber" Type="Real" Deprecated="false" />
		<Constant Name="ev_outside_view6" Class="EventNumber" Type="Real" Deprecated="false" />
		<Constant Name="ev_outside_view7" Class="EventNumber" Type="Real" Deprecated="false" />
		<Constant Name="ev_boundary_view1" Class="EventNumber" Type="Real" Deprecated="false" />
		<Constant Name="ev_boundary_view2" Class="EventNumber" Type="Real" Deprecated="false" />
		<Constant Name="ev_boundary_view3" Class="EventNumber" Type="Real" Deprecated="false" />
		<Constant Name="ev_boundary_view4" Class="EventNumber" Type="Real" Deprecated="false" />
		<Constant Name="ev_boundary_view5" Class="EventNumber" Type="Real" Deprecated="false" />
		<Constant Name="ev_boundary_view6" Class="EventNumber" Type="Real" Deprecated="false" />
		<Constant Name="ev_boundary_view7" Class="EventNumber" Type="Real" Deprecated="false" />
		<Constant Name="ev_web_image_load" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_web_sound_load" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_web_async" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_dialog_async" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_web_iap" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_web_cloud" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_web_networking" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_web_steam" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_social" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_push_notification" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_audio_recording" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_audio_playback" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_audio_playback_ended" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="ev_system_event" Class="EventNumber" Type="Real" Deprecated="true" />
		<Constant Name="vk_return" Class="VirtualKey" Type="Real" Deprecated="false" />
		<Constant Name="vk_f2" Type="Real" Class="VirtualKey" Deprecated="false" />
		<Constant Name="vk_f3" Class="VirtualKey" Type="Real" Deprecated="false" />
		<Constant Name="vk_f4" Class="VirtualKey" Type="Real" Deprecated="false" />
		<Constant Name="vk_f5" Class="VirtualKey" Type="Real" Deprecated="false" />
		<Constant Name="vk_f6" Class="VirtualKey" Type="Real" Deprecated="false" />
		<Constant Name="vk_f7" Class="VirtualKey" Type="Real" Deprecated="false" />
		<Constant Name="vk_f8" Class="VirtualKey" Type="Real" Deprecated="false" />
		<Constant Name="vk_f9" Class="VirtualKey" Type="Real" Deprecated="false" />
		<Constant Name="vk_f10" Class="VirtualKey" Type="Real" Deprecated="false" />
		<Constant Name="vk_f11" Class="VirtualKey" Type="Real" Deprecated="false" />
		<Constant Name="vk_f12" Class="VirtualKey" Type="Real" Deprecated="false" />
		<Constant Name="vk_numpad1" Class="VirtualKey" Type="Real" Deprecated="false" />
		<Constant Name="vk_numpad2" Class="VirtualKey" Type="Real" Deprecated="false" />
		<Constant Name="vk_numpad3" Class="VirtualKey" Type="Real" Deprecated="false" />
		<Constant Name="vk_numpad4" Class="VirtualKey" Type="Real" Deprecated="false" />
		<Constant Name="vk_numpad5" Class="VirtualKey" Type="Real" Deprecated="false" />
		<Constant Name="vk_numpad6" Class="VirtualKey" Type="Real" Deprecated="false" />
		<Constant Name="vk_numpad7" Class="VirtualKey" Type="Real" Deprecated="false" />
		<Constant Name="vk_numpad8" Class="VirtualKey" Type="Real" Deprecated="false" />
		<Constant Name="vk_numpad9" Class="VirtualKey" Type="Real" Deprecated="false" />
		<Constant Name="c_dkgrey" Class="Color" Type="Real" Deprecated="false" />
		<Constant Name="c_grey" Class="Color" Type="Real" Deprecated="false" />
		<Constant Name="c_ltgrey" Class="Color" Type="Real" Deprecated="false" />
		<Constant Name="pr_trianglefan" Class="PrimitiveType" Type="Real" Deprecated="false" />
		<Constant Name="bm_src_color" Class="BlendMode" Type="Real" Deprecated="false" Locale="US" />
		<Constant Name="bm_inv_src_color" Class="BlendMode" Type="Real" Deprecated="false" Locale="US" />
		<Constant Name="bm_dest_color" Class="BlendMode" Type="Real" Deprecated="false" Locale="US" />
		<Constant Name="bm_inv_dest_color" Class="BlendMode" Type="Real" Deprecated="false" Locale="US" />
		<Constant Name="audio_old_system" Type="Real" Deprecated="true" />
		<Constant Name="audio_new_system" Type="Real" Deprecated="true" />
		<Constant Name="os_win32" Class="OperatingSystem" Type="Real" Deprecated="true" />
		<Constant Name="os_winphone" Class="OperatingSystem" Type="Real" Deprecated="false" />
		<Constant Name="os_win8native" Class="OperatingSystem" Type="Real" Deprecated="false" />
		<Constant Name="os_psvita" Class="OperatingSystem" Type="Real" Deprecated="false" />
		<Constant Name="os_ps3" Class="OperatingSystem" Type="Real" Deprecated="false" />
		<Constant Name="browser_edge" Class="Browser" Type="Real" Deprecated="false" />
		<Constant Name="of_challenge_win" Type="Real" Deprecated="true" />
		<Constant Name="of_challenge_lose" Type="Real" Deprecated="true" />
		<Constant Name="of_challenge_tie" Type="Real" Deprecated="true" />
		<Constant Name="leaderboard_type_number" Type="Real" Deprecated="true" />
		<Constant Name="leaderboard_type_time_mins_secs" Type="Real" Deprecated="true" />
		<Constant Name="cmpfunc_never" Class="ZFunction" Type="Real" Deprecated="false" />
		<Constant Name="cmpfunc_less" Class="ZFunction" Type="Real" Deprecated="false" />
		<Constant Name="cmpfunc_equal" Class="ZFunction" Type="Real" Deprecated="false" />
		<Constant Name="cmpfunc_lessequal" Class="ZFunction" Type="Real" Deprecated="false" />
		<Constant Name="cmpfunc_greater" Class="ZFunction" Type="Real" Deprecated="false" />
		<Constant Name="cmpfunc_notequal" Class="ZFunction" Type="Real" Deprecated="false" />
		<Constant Name="cmpfunc_greaterequal" Class="ZFunction" Type="Real" Deprecated="false" />
		<Constant Name="cmpfunc_always" Class="ZFunction" Type="Real" Deprecated="false" />
		<Constant Name="iap_ev_storeload" Type="Real" Deprecated="false" />
		<Constant Name="iap_ev_product" Type="Real" Deprecated="false" />
		<Constant Name="iap_ev_purchase" Type="Real" Deprecated="false" />
		<Constant Name="iap_ev_consume" Type="Real" Deprecated="false" />
		<Constant Name="iap_ev_restore" Type="Real" Deprecated="false" />
		<Constant Name="iap_storeload_ok" Type="Real" Deprecated="false" />
		<Constant Name="iap_storeload_failed" Type="Real" Deprecated="false" />
		<Constant Name="iap_status_uninitialised" Type="Real" Deprecated="false" />
		<Constant Name="iap_status_unavailable" Type="Real" Deprecated="false" />
		<Constant Name="iap_status_loading" Type="Real" Deprecated="false" />
		<Constant Name="iap_status_available" Type="Real" Deprecated="false" />
		<Constant Name="iap_status_processing" Type="Real" Deprecated="false" />
		<Constant Name="iap_status_restoring" Type="Real" Deprecated="false" />
		<Constant Name="iap_failed" Type="Real" Deprecated="false" />
		<Constant Name="iap_unavailable" Type="Real" Deprecated="false" />
		<Constant Name="iap_available" Type="Real" Deprecated="false" />
		<Constant Name="iap_purchased" Type="Real" Deprecated="false" />
		<Constant Name="iap_canceled" Type="Real" Deprecated="false" />
		<Constant Name="iap_refunded" Type="Real" Deprecated="false" />
		<Constant Name="phy_debug_render_aabb" Class="PhysicsDebugFlag" Type="Real" Deprecated="false" />
		<Constant Name="phy_debug_render_collision_pairs" Class="PhysicsDebugFlag" Type="Real" Deprecated="false" />
		<Constant Name="phy_debug_render_coms" Class="PhysicsDebugFlag" Type="Real" Deprecated="false" />
		<Constant Name="phy_debug_render_core_shapes" Class="PhysicsDebugFlag" Type="Real" Deprecated="false" />
		<Constant Name="phy_debug_render_joints" Class="PhysicsDebugFlag" Type="Real" Deprecated="false" />
		<Constant Name="phy_debug_render_obb" Class="PhysicsDebugFlag" Type="Real" Deprecated="false" />
		<Constant Name="phy_debug_render_shapes" Class="PhysicsDebugFlag" Type="Real" Deprecated="false" />
		<Constant Name="phy_particle_flag_colormixing" Class="PhysicsParticleFlag" Type="Real" Deprecated="false" Locale="US" />
		<Constant Name="phy_particle_data_flag_color" Class="PhysicsParticleFlag" Type="Real" Deprecated="false" Locale="US" />
		<Constant Name="achievement_our_info" Type="Real" Deprecated="true" />
		<Constant Name="achievement_friends_info" Type="Real" Deprecated="true" />
		<Constant Name="achievement_leaderboard_info" Type="Real" Deprecated="true" />
		<Constant Name="achievement_achievement_info" Type="Real" Deprecated="true" />
		<Constant Name="achievement_pic_loaded" Type="Real" Deprecated="true" />
		<Constant Name="achievement_show_ui" Type="Real" Deprecated="true" />
		<Constant Name="achievement_show_profile" Type="Real" Deprecated="true" />
		<Constant Name="achievement_show_leaderboard" Type="Real" Deprecated="true" />
		<Constant Name="achievement_show_achievement" Type="Real" Deprecated="true" />
		<Constant Name="achievement_show_bank" Type="Real" Deprecated="true" />
		<Constant Name="achievement_show_friend_picker" Type="Real" Deprecated="true" />
		<Constant Name="achievement_show_purchase_prompt" Type="Real" Deprecated="true" />
		<Constant Name="network_type_connect" Class="NetworkType" Type="Real" Deprecated="false" />
		<Constant Name="network_type_disconnect" Class="NetworkType" Type="Real" Deprecated="false" />
		<Constant Name="network_type_data" Class="NetworkType" Type="Real" Deprecated="false" />
		<Constant Name="network_type_non_blocking_connect" Class="NetworkType" Type="Real" Deprecated="false" />
		<Constant Name="network_type_up" Class="NetworkType" Type="Real" Deprecated="false" />
		<Constant Name="network_type_up_failed" Class="NetworkType" Type="Real" Deprecated="false" />
		<Constant Name="network_type_down" Class="NetworkType" Type="Real" Deprecated="false" />
		<Constant Name="network_connect_none" Class="NetworkConnectType" Type="Real" Deprecated="false" />
		<Constant Name="network_connect_blocking" Class="NetworkConnectType" Type="Real" Deprecated="false" />
		<Constant Name="network_connect_nonblocking" Class="NetworkConnectType" Type="Real" Deprecated="false" />
		<Constant Name="network_connect_active" Class="NetworkConnectType" Type="Real" Deprecated="false" />
		<Constant Name="network_connect_passive" Class="NetworkConnectType" Type="Real" Deprecated="false" />
		<Constant Name="vertex_usage_color" Class="VertexUsage" Type="Real" Deprecated="false" Locale="US" />
		<Constant Name="vertex_usage_texcoord" Class="VertexUsage" Type="Real" Deprecated="false" />
		<Constant Name="vertex_usage_psize" Class="VertexUsage" Type="Real" Deprecated="false" />
		<Constant Name="vertex_type_color" Class="VertexType" Type="Real" Deprecated="false" Locale="US" />
		<Constant Name="layerelementtype_undefined" Class="LayerElementType" Type="Real" Deprecated="false" />
		<Constant Name="layerelementtype_oldtilemap" Class="LayerElementType" Type="Real" Deprecated="false" />
		<Constant Name="kbv_type_default" Class="VirtualKeyboardType" Type="Real" Deprecated="false" />
		<Constant Name="kbv_type_ascii" Class="VirtualKeyboardType" Type="Real" Deprecated="false" />
		<Constant Name="kbv_type_url" Class="VirtualKeyboardType" Type="Real" Deprecated="false" />
		<Constant Name="kbv_type_email" Class="VirtualKeyboardType" Type="Real" Deprecated="false" />
		<Constant Name="kbv_type_numbers" Class="VirtualKeyboardType" Type="Real" Deprecated="false" />
		<Constant Name="kbv_type_phone" Class="VirtualKeyboardType" Type="Real" Deprecated="false" />
		<Constant Name="kbv_type_phone_name" Class="VirtualKeyboardType" Type="Real" Deprecated="false" />
		<Constant Name="kbv_returnkey_default" Class="VirtualKeyboardReturnType" Type="Real" Deprecated="false" />
		<Constant Name="kbv_returnkey_go" Class="VirtualKeyboardReturnType" Type="Real" Deprecated="false" />
		<Constant Name="kbv_returnkey_google" Class="VirtualKeyboardReturnType" Type="Real" Deprecated="false" />
		<Constant Name="kbv_returnkey_join" Class="VirtualKeyboardReturnType" Type="Real" Deprecated="false" />
		<Constant Name="kbv_returnkey_next" Class="VirtualKeyboardReturnType" Type="Real" Deprecated="false" />
		<Constant Name="kbv_returnkey_route" Class="VirtualKeyboardReturnType" Type="Real" Deprecated="false" />
		<Constant Name="kbv_returnkey_search" Class="VirtualKeyboardReturnType" Type="Real" Deprecated="false" />
		<Constant Name="kbv_returnkey_send" Class="VirtualKeyboardReturnType" Type="Real" Deprecated="false" />
		<Constant Name="kbv_returnkey_yahoo" Class="VirtualKeyboardReturnType" Type="Real" Deprecated="false" />
		<Constant Name="kbv_returnkey_done" Class="VirtualKeyboardReturnType" Type="Real" Deprecated="false" />
		<Constant Name="kbv_returnkey_continue" Class="VirtualKeyboardReturnType" Type="Real" Deprecated="false" />
		<Constant Name="kbv_returnkey_emergency" Class="VirtualKeyboardReturnType" Type="Real" Deprecated="false" />
		<Constant Name="kbv_autocapitalize_none" Class="VirtualKeyboardAutoCapitalizeType" Type="Real" Deprecated="false" />
		<Constant Name="kbv_autocapitalize_words" Class="VirtualKeyboardAutoCapitalizeType" Type="Real" Deprecated="false" />
		<Constant Name="kbv_autocapitalize_sentences" Class="VirtualKeyboardAutoCapitalizeType" Type="Real" Deprecated="false" />
		<Constant Name="kbv_autocapitalize_characters" Class="VirtualKeyboardAutoCapitalizeType" Type="Real" Deprecated="false" />
		<Constant Name="nineslice_center" Class="NineSlice"  Type="Real" Deprecated="false" />
		<Constant Name="seqtracktype_color" Class="SequenceTrackType" Type="Real" Deprecated="false" Locale="US">This is a colour data parameter track.</Constant>
		<Constant Name="seqinterpolation_assign" Type="Real" Deprecated="false" />
		<Constant Name="seqinterpolation_lerp" Type="Real" Deprecated="false" />
		<Constant Name="animcurvetype_linear" Type="Real" Class="AnimCurveInterpolationType" Deprecated="false" />
		<Constant Name="animcurvetype_catmullrom" Type="Real" Class="AnimCurveInterpolationType" Deprecated="false" />
		<Constant Name="animcurvetype_bezier" Type="Real" Class="AnimCurveInterpolationType" Deprecated="false" />
		<Constant Name="video_format_rgba" Class="VideoFormat" Type="Real" Deprecated="false" />
		<Constant Name="video_format_yuv" Class="VideoFormat" Type="Real" Deprecated="false" />
		<Constant Name="video_status_closed" Class="VideoStatus" Type="Real" Deprecated="false" />
		<Constant Name="video_status_preparing" Class="VideoStatus" Type="Real" Deprecated="false" />
		<Constant Name="video_status_playing" Class="VideoStatus" Type="Real" Deprecated="false" />
		<Constant Name="video_status_paused" Class="VideoStatus" Type="Real" Deprecated="false" />
		<Constant Name="time_source_global" Type="Real" Class="TimeSource" Deprecated="false" />
		<Constant Name="time_source_game" Type="Real" Class="TimeSource" Deprecated="false" />
		<Constant Name="time_source_units_seconds" Type="Real" Class="TimeSourceUnits" Deprecated="false" />
		<Constant Name="time_source_units_frames" Type="Real" Class="TimeSourceUnits" Deprecated="false" />
		<Constant Name="time_source_expire_nearest" Type="Real" Class="TimeSourceExpiryType" Deprecated="false" />
		<Constant Name="time_source_expire_after" Type="Real" Class="TimeSourceExpiryType" Deprecated="false" />
		<Constant Name="time_source_state_initial" Type="Real" Class="TimeSourceState" Deprecated="false" />
		<Constant Name="time_source_state_active" Type="Real" Class="TimeSourceState" Deprecated="false" />
		<Constant Name="time_source_state_paused" Type="Real" Class="TimeSourceState" Deprecated="false" />
		<Constant Name="time_source_state_stopped" Type="Real" Class="TimeSourceState" Deprecated="false" />
		<Constant Name="rollback_connected_to_peer" Type="Real" Deprecated="false" FeatureFlag="rollback">Fired when the (in rollback_event_param) player_id is connected</Constant>
		<Constant Name="rollback_synchronizing_with_peer" Type="Real" Deprecated="false" FeatureFlag="rollback">Fired when the (in rollback_event_param) player_id is synchonizing</Constant>
		<Constant Name="rollback_synchronized_with_peer" Type="Real" Deprecated="false" FeatureFlag="rollback">Fired when the (in rollback_event_param) player_id is done synchonizing</Constant>
		<Constant Name="rollback_disconnected_from_peer" Type="Real" Deprecated="false" FeatureFlag="rollback">Fired when the (in rollback_event_param) player_id is disconnected</Constant>
		<Constant Name="rollback_game_interrupted" Type="Real" Deprecated="false" FeatureFlag="rollback">Fired when the game is interrupted by a (in rollback_event_param) player_id</Constant>
		<Constant Name="rollback_game_resumed" Type="Real" Deprecated="false" FeatureFlag="rollback">Fired when the game resumes after being interrupted by (in rollback_event_param) player_id</Constant>
		<Constant Name="rollback_game_full" Type="Real" Deprecated="false" FeatureFlag="rollback">Fired when the game you're trying to join is already full</Constant>
		<Constant Name="rollback_game_info" Type="Real" Deprecated="false" FeatureFlag="rollback">Fired when you receive back info about the game (in rollback_event_param) player_id and num_players</Constant>
		<Constant Name="rollback_connection_rejected" Type="Real" Deprecated="false" FeatureFlag="rollback">Fired when connection attempt was rejected. The error can be caused by invalid token, mismatch in client versions, mismatch in protocol versions. Multiplayer session is closed automatically before event is fired</Constant>
		<Constant Name="rollback_protocol_rejected" Type="Real" Deprecated="false" FeatureFlag="rollback">Fired when connection attempt was rejected. The error means that client uses obsolete version of the protocol. Before this event is fired GM will show an error message in the UI. Multiplayer session is closed automatically before event is fired</Constant>
		<Constant Name="rollback_end_game" Type="Real" Deprecated="false" FeatureFlag="rollback">Fired when server wants clients to stop the game. Usually this event means that clients are in inconsistent state. Multiplayer session is closed automatically before event is fired</Constant>
		<Constant Name="rollback_chat_message" Type="Real" Deprecated="false" FeatureFlag="rollback">Fired when you receive a chat message, including those sent by the local player (in rollback_event_param) message, from and to</Constant>
		<Constant Name="rollback_player_prefs" Type="Real" Deprecated="false" FeatureFlag="rollback">Fired when you receive new preferences set by any of the players in the game, including those set by the local player (in rollback_event_param) preferences, and player_id</Constant>
		<Constant Name="rollback_high_latency" Type="Real" Deprecated="false" FeatureFlag="rollback">Fired when the latency to the server is too high and it's impossible to run the game. Multiplayer session is closed automatically before event is fired</Constant>
		<Constant Name="rollback_connect_info" Type="Real" Deprecated="false" FeatureFlag="rollback">Fired when you get info of where players should connect (in rollback_event_param) share_url</Constant>
		<Constant Name="rollback_connect_error" Type="Real" Deprecated="false" FeatureFlag="rollback">Fired when you fail to connect to the backend</Constant>
		<Constant Name="audio_bus_main" Type="Struct.AudioBus" Deprecated="false" FeatureFlag="audio-fx">The main audio bus</Constant>
		<Constant Name="sprite_add_ext_error_unknown" Type="Real" Deprecated="false" />
		<Constant Name="sprite_add_ext_error_cancelled" Type="Real" Deprecated="false" />
		<Constant Name="sprite_add_ext_error_spritenotfound" Type="Real" Deprecated="false" />
		<Constant Name="sprite_add_ext_error_loadfailed" Type="Real" Deprecated="false" />
		<Constant Name="sprite_add_ext_error_decompressfailed" Type="Real" Deprecated="false" />
		<Constant Name="sprite_add_ext_error_setupfailed" Type="Real" Deprecated="false" />
    </Constants>
	<Structures>
		<Structure Name="Sequence">
			<Field Name="name" Type="String" Get="true" Set="true">This is the name of the sequence as a string and you can get or set this value as required. Note that sequences created using the function sequence_create() will not have a name and this will simply be an empty string &quot;&quot;.</Field>
			<Field Name="loopmode" Type="Constant.SeqPlay" Get="true" Set="true">This is the playback mode of the sequence object and can be get or set.</Field>
			<Field Name="playbackSpeed" Type="Real" Get="true" Set="true">This specifies the playback speed of the sequence, which is interpreted as either frames-per-second or frames-per-game-frame depending on the playbackSpeedType (see below). You can get or set this value.</Field>
			<Field Name="playbackSpeedType" Type="Constant.SpriteSpeed" Get="true" Set="true">This specifies how the playbackSpeed should be interpreted and you can get or set this value.</Field>
			<Field Name="length" Type="Real" Get="true" Set="true">The length of the sequence in frames. You can get or set this value, but note that making a sequence shorter may cause issues if a sequence instance referencing this sequence has its playhead set to past the new length.</Field>
			<Field Name="volume" Type="Real" Get="true" Set="true">This is a scalar value from 0 to 1 that is used to scale the volume of all audio tracks in the sequence. You can get or set this value and it will modify the global audio output for all tracks - for example, if you have an audio track with a volume of 0.8 and then set the sequence volume property to 0.5, the audio track will have a final volume of 0.4.</Field>
			<Field Name="xorigin" Type="Real" Get="true" Set="true">This is the origin of the sequence along the X axis.</Field>
			<Field Name="yorigin" Type="Real" Get="true" Set="true">This is the origin of the sequence along the Y axis.</Field>
			<Field Name="messageEventKeyframes" Type="Array" Get="true" Set="true">This allows access to the message event keyframes for the sequence. You can get or set these message events, and when getting this property an array of keyframe structs is returned, and for setting the property you           should supply an array of keyframe structs. For more information, please see the page on Sequence Events and Moments.</Field>
			<Field Name="momentKeyframes" Type="Array" Get="true" Set="true">This allows access to the moment event keyframes for the sequence. You can get or set these moment events, and when getting this property an array of keyframe structs is returned, and for setting the property you should supply           an array of keyframe structs. For more information, please see the page on Sequence Events and Moments.</Field>
			<Field Name="tracks" Type="Array" Get="true" Set="true">This allows access to the list of asset tracks on the top level of the sequence. You can get or set this property, and when getting this property an array of track structs is returned, and for setting the property you should           supply an array of track structs. For more information, please see the section on Track Structs.</Field>
		</Structure>
		<Structure Name="SequenceInstance">
			<Field Name="sequence" Type="Struct.Sequence" Get="true" Set="true" />
			<Field Name="headPosition" Type="Real" Get="true" Set="true" />
			<Field Name="headDirection" Type="Constant.SequenceDirection" Get="true" Set="true" />
			<Field Name="speedScale" Type="Real" Get="true" Set="true" />
			<Field Name="volume" Type="Real" Get="true" Set="true" />
			<Field Name="paused" Type="Bool" Get="true" Set="true" />
			<Field Name="finished" Type="Bool" Get="true" Set="true" />
			<Field Name="activeTracks" Type="Array[Struct.ActiveTrack]" Get="true" Set="true" />
			<Field Name="elementID" Type="Id.SequenceElement" Get="true" Set="true" />
		</Structure>
		<Structure Name="Track">
			<Field Name="name" Type="String" Get="true" Set="true" />
			<Field Name="type" Type="Constant.SequenceTrackType" Get="true" Set="true" />
			<Field Name="tracks" Type="Array[Struct.Track]" Get="true" Set="true" />
			<Field Name="visible" Type="Bool" Get="true" Set="true" />
			<Field Name="keyframes" Type="Array[Struct.Keyframe]" Get="true" Set="true" />
		</Structure>
		<Structure Name="Keyframe">
			<Field Name="frame" Type="Real" Get="true" Set="true" />
			<Field Name="length" Type="Real" Get="true" Set="true" />
			<Field Name="stretch" Type="Bool" Get="true" Set="true" />
			<Field Name="disabled" Type="Bool" Get="true" Set="true" />
			<Field Name="channels" Type="Array" Get="true" Set="true" />
		</Structure>
		<Structure Name="KeyChannel">
			<Field Name="channel" Type="Real" Get="true" Set="true" />
		</Structure>
		<Structure Name="GraphicTrack">
			<Field Name="spriteIndex" Type="Asset.GMSprite" Get="true" Set="true" />
		</Structure>
		<Structure Name="SequenceTrack">
			<Field Name="sequence" Type="Undefined" Get="true" Set="true" />
		</Structure>
		<Structure Name="AudioTrack">
			<Field Name="soundIndex" Type="Asset.GMSound" Get="true" Set="true" />
			<Field Name="emitterIndex" Type="Id.EmitterIndex" Get="true" Set="true" />
			<Field Name="playbackMode" Type="Real" Get="true" Set="true" />
		</Structure>
		<Structure Name="SpriteTrack">
			<Field Name="imageIndex" Type="Real" Get="true" Set="true" />
		</Structure>
		<Structure Name="BoolTrack">
			<Field Name="value" Type="Bool" Get="true" Set="true" />
		</Structure>
		<Structure Name="StringTrack">
			<Field Name="value" Type="String" Get="true" Set="true" />
		</Structure>
		<Structure Name="ColourTrack">
			<Field Name="colour" Type="Constant.Color" Get="true" Set="true" />
		</Structure>
		<Structure Name="ColorTrack">
			<Field Name="color" Type="Constant.Color" Get="true" Set="true" Locale="US" />
		</Structure>
		<Structure Name="RealTrack">
			<Field Name="value" Type="Real" Get="true" Set="true" />
			<Field Name="curve" Type="Real" Get="true" Set="true" />
		</Structure>
		<Structure Name="InstanceTrack">
			<Field Name="objectIndex" Type="Asset.GMObject" Get="true" Set="true" />
		</Structure>
		<Structure Name="TextTrack">
			<Field Name="text" Type="String" Get="true" Set="true" />
		</Structure>
		<Structure Name="MessageEvent">
			<Field Name="events" Type="Array" Get="true" Set="true" />
		</Structure>
		<Structure Name="Moment">
			<Field Name="event" Type="Real" Get="true" Set="true" />
		</Structure>
		<Structure Name="AnimCurve">
			<Field Name="name" Type="String" Get="true" Set="true" />
			<Field Name="graphType" Type="Real" Get="true" Set="true" />
			<Field Name="channels" Type="Array" Get="true" Set="true" />
		</Structure>
		<Structure Name="AnimCurveChannel">
			<Field Name="type" Type="Constant.AnimCurveChannel" Get="true" Set="true" />
			<Field Name="iterations" Type="Real" Get="true" Set="true" />
			<Field Name="points" Type="Real" Get="true" Set="true" />
		</Structure>
		<Structure Name="AnimCurvePoint">
			<Field Name="posx" Type="Real" Get="true" Set="true" />
			<Field Name="value" Type="Real" Get="true" Set="true" />
		</Structure>
		<Structure Name="ActiveTrack">
			<Field Name="activeTracks" Type="Array[Struct.Track]" Get="true" Set="false" />
			<Field Name="matrix" Type="Array" Get="true" Set="true" />
			<Field Name="posx" Type="Real" Get="true" Set="true" />
			<Field Name="posy" Type="Real" Get="true" Set="true" />
			<Field Name="scalex" Type="Real" Get="true" Set="true" />
			<Field Name="scaley" Type="Real" Get="true" Set="true" />
			<Field Name="xorigin" Type="Real" Get="true" Set="true" />
			<Field Name="yorigin" Type="Real" Get="true" Set="true" />
			<Field Name="gain" Type="Real" Get="true" Set="true" />
			<Field Name="pitch" Type="Real" Get="true" Set="true" />
			<Field Name="width" Type="Real" Get="true" Set="true" />
			<Field Name="height" Type="Real" Get="true" Set="true" />
			<Field Name="imageindex" Type="Real" Get="true" Set="true" />
			<Field Name="imagespeed" Type="Real" Get="true" Set="true" />
			<Field Name="colorMultiply" Type="Array" Get="true" Set="true" Locale="US" />
			<Field Name="colourMultiply" Type="Array" Get="true" Set="true" Locale="GB" />
			<Field Name="emitterIndex" Type="Id.AudioEmitter" Get="true" Set="true" />
			<Field Name="track" Type="Struct.Track" Get="true" Set="true" />
			<Field Name="parent" Type="Struct.SequenceInstance" Get="true" Set="true" />
			<Field Name="frameSizeX" Type="Real" Get="true" Set="true" />
			<Field Name="frameSizeY" Type="Real" Get="true" Set="true" />
			<Field Name="characterSpacing" Type="Real" Get="true" Set="true" />
			<Field Name="lineSpacing" Type="Real" Get="true" Set="true" />
			<Field Name="paragraphSpacing" Type="Real" Get="true" Set="true" />
		</Structure>
		<Structure Name="GCStats">
			<Field Name="objects_touched" Type="Real" Get="true" Set="true" />
			<Field Name="objects_collected" Type="Real" Get="true" Set="true" />
			<Field Name="traversal_time" Type="Real" Get="true" Set="true" />
			<Field Name="collection_time" Type="Real" Get="true" Set="true" />
			<Field Name="gc_frame" Type="Real" Get="true" Set="true" />
			<Field Name="generation_collected" Type="Real" Get="true" Set="true" />
			<Field Name="num_generations" Type="Real" Get="true" Set="true" />
			<Field Name="num_objects_in_generation" Type="Array" Get="true" Set="true" />
		</Structure>
		<Structure Name="WeakRef">
			<Field Name="ref" Type="ArgumentIdentity" Get="true" Set="true" />
		</Structure>
		<Structure Name="FontInfo">
			<Field Name="ascenderOffset" Type="Real" Get="true" Set="false" />
			<Field Name="size" Type="Real" Get="true" Set="false" />
			<Field Name="spriteIndex" Type="Asset.GMSprite" Get="true" Set="false" />
			<Field Name="texture" Type="Asset.GMTexturePage" Get="true" Set="false" />
			<Field Name="name" Type="String" Get="true" Set="false" />
			<Field Name="bold" Type="Bool" Get="true" Set="false" />
			<Field Name="italic" Type="Bool" Get="true" Set="false" />
			<Field Name="glyphs" Type="Struct" Get="true" Set="false" />
		</Structure>
		<Structure Name="FontInfoGlyph">
			<Field Name="char" Type="Real" Get="true" Set="false" />
			<Field Name="x" Type="Real" Get="true" Set="false" />
			<Field Name="y" Type="Real" Get="true" Set="false" />
			<Field Name="w" Type="Real" Get="true" Set="false" />
			<Field Name="h" Type="Real" Get="true" Set="false" />
			<Field Name="shift" Type="Real" Get="true" Set="false" />
			<Field Name="offset" Type="Real" Get="true" Set="false" />
			<Field Name="kerning" Type="Array" Get="true" Set="false" />
		</Structure>
		<Structure Name="Exception">
			<Field Name="message" Type="String" Get="true" Set="true">Short message for this exception.</Field>
			<Field Name="longMessage" Type="String" Get="true" Set="true">Long message for this exception.</Field>
			<Field Name="script" Type="String" Get="true" Set="true">Describes the script where this exception came from.</Field>
			<Field Name="stacktrace" Type="Array.String" Get="true" Set="true">The stack frame that the exception was generated from.</Field>
		</Structure>
		<Structure Name="AudioBus" FeatureFlag="audio-fx">
			<Field Name="bypass" Type="Bool" Get="true" Set="true">Whether to bypass all effects and gain scaling of the bus.</Field>
			<Field Name="gain" Type="Real" Get="true" Set="true">The output gain of the bus.</Field>
			<Field Name="effects" Type="Array.Struct.AudioEffect" Get="true" Set="true">The chain of audio effects on the bus.</Field>
		</Structure>
		<Structure Name="AudioEffect" FeatureFlag="audio-fx">
			<Field Name="bypass" Type="Bool" Get="true" Set="true">Whether to bypass the effect.</Field>
			<Field Name="cutoff" Type="Real" Get="true" Set="true">The cutoff frequency of the filter.</Field>
			<Field Name="damp" Type="Real" Get="true" Set="true">The amount of higher frequency damping.</Field>
			<Field Name="factor" Type="Real" Get="true" Set="true">The factor by which the signal is downsampled.</Field>
			<Field Name="feedback" Type="Real" Get="true" Set="true">The proportion of the signal which is fed back into the delay line.</Field>
			<Field Name="gain" Type="Real" Get="true" Set="true">The gain applied to the input signal.</Field>
			<Field Name="intensity" Type="Real" Get="true" Set="true">The propertion of the signal which is affected by the LFO.</Field>
			<Field Name="mix" Type="Real" Get="true" Set="true">The proportion of the affected signal to output.</Field>
			<Field Name="offset" Type="Real" Get="true" Set="true">The proportion of the LFO period that the LFOs should be desynced by.</Field>
			<Field Name="q" Type="Real" Get="true" Set="true">The quality factor of the filter.</Field>
			<Field Name="rate" Type="Real" Get="true" Set="true">The frequency of the modulating LFO.</Field>
			<Field Name="resolution" Type="Real" Get="true" Set="true">The bit depth at which the signal is resampled.</Field>
			<Field Name="shape" Type="Enum.AudioLFOType" Get="true" Set="true">The waveshape of the LFO.</Field>
			<Field Name="size" Type="Real" Get="true" Set="true">The size of the space.</Field>
			<Field Name="time" Type="Real" Get="true" Set="true">The duration of the delay.</Field>
			<Field Name="type" Type="Enum.AudioEffectType" Get="true" Set="false">The type of the effect.</Field>
		</Structure>
	</Structures>
	<Enumerations>
		<Enumeration Name="AudioEffectType">
			<Member Name="Bitcrusher" Value="0" Deprecated="false">Distorts sound by reducing bandwidth.</Member>
			<Member Name="Delay" Value="1" Deprecated="false"></Member>
			<Member Name="Gain" Value="2" Deprecated="false"></Member>
			<Member Name="HPF2" Value="3" Deprecated="false">High-pass Filter</Member>
			<Member Name="LPF2" Value="4" Deprecated="false">Low-pass Filter</Member>
			<Member Name="Reverb1" Value="5" Deprecated="false">Reverberation, an echo.</Member>
			<Member Name="Tremolo" Value="6" Deprecated="false">Gain modulator</Member>
		</Enumeration>
		<Enumeration Name="AudioLFOType">
			<Member Name="InvSawtooth" Value="0" Deprecated="false">An inverted sawtooth waveshape.</Member>
			<Member Name="Sawtooth" Value="1" Deprecated="false">A sawtooth waveshape.</Member>
			<Member Name="Sine" Value="2" Deprecated="false">A sine waveshape.</Member>
			<Member Name="Square" Value="3" Deprecated="false">A square waveshape.</Member>
			<Member Name="Triangle" Value="4" Deprecated="false">A triangle waveshape.</Member>
		</Enumeration>
	</Enumerations>
</GameMakerLanguageSpec>
