# ChangeLog

## Build 2.0.21

- Fixed GetInAppPurchaseLocalPrice() returning the incorrect price for the given index on iOS
- Fixed CreateObjectFromObjectMesh causing a crash if the mesh uses bones
- Fixed SaveImage not creating any missing folders in the save path
- Added StringToBase64 and HexToBase64 commands to convert strings to Base64
- Fixed SetHTTPHost username and password not being set correctly on Windows, Mac, and iOS
- Fixed GetImage only working on Windows
- Fixed Broadcaster sometimes failing to send large projects to a device
- Fixed UpdateTweenText, UpdateTweenChar, UpdateTweenObject, and UpdateTweenCamera not doing anything
- Improved the resizing performance of LoadImageResized by using the GPU to do the scaling
- Removed the caching ability of LoadImageResized as it is no longer beneficial due to the better resizing performance
- Fixed ViewFile, ShareText, and ShareImage causing a crash when exporting for Amazon or Ouya
- Fixed ViewFile, ShareText, and ShareImage causing a crash when used in Tier 2 on Android
- Fixed StopSound(0) not resetting all the instance counts for GetSoundsPlaying and GetSoundInstances
- Fixed OGG music not resuming on iOS after the app has been in the background
- Added an error message if SaveSharedVariable is used with a variable name that is too long on iOS
- Fixed Android shared variables not working across multiple apps
- Note that this version will not be able to access shared variables saved with a previous version on both Android and iOS
- Removed the requirement to set the SharedUserID on Android for shared variables
- Fixed some Android devices not registering touch move events
- Fixed DrawBox freezing the app on Windows if the window is minimized
- Added SetImmersiveMode command to hide the navigation bar on Android 4.4 and above
- Fixed local and push notification icons appearing as a white square when targeting above API 19 on Android
- Added notification icon field to APK export dialog to chose your own notification icon
- Amazon and Ouya exports now have a minimum Android version of 4.0.3 to match their devices, Google export remains at 2.3.3
- Added quotes around the keystore and alias passwords when signing APKs so that special characters don't cause an error
- Added SetMusicSystemVolumeOGG to control global volume for OGG music files
- Fixed iOS alarms and phone calls preventing the app from playing sounds and OGG music when it resumes
- Removed lower limit of 0.1 on SetParticlesFrequency, 0 can now be used to pause particle emission whilst allowing existing particles to continue
- Fixed Linux IDE not being able to open the PDF DLCs from the menu
- Added an extract from the Tutorial Guide to the help files
- Updated Chartboost SDK on Android to 6.4.2
- Updated Chartboost SDK on iOS to 6.4.7
- Added Amazon IAP support to the IAP commands
- Fixed LoadObject and LoadObjectWithChildren failing to load after about 600 objects had been loaded
- Fixed PlayMusicOGG failing to loop in some cases
- Fixed GetSoundInstancePlaying taking up to a second to register the end of a sound instance on Android
- Updated the developer tips section of the help files for the latest changes
- Made Android pad any sounds that are shorter than 175ms with silence as they wouldn't play on some devices if they were shorter than this
- Fixed EncodeQRCode not producing the correct QR image
- Fixed DecodeQRCode not returning the correct text for a QR image
- Fixed SetObjectScalePermanent causing the object to be incorrectly culled from view if it used bones and was made bigger
- Changed ObjectRayCast to check the bone bounding boxes instead of the mesh on animated objects, it won't be 100% accurate compared to the mesh but it will take animations into account
- Fixed GetCapturedImage not returning a valid image on Android
- Fixed frame buffer warning on Mac if SetRenderToImage is used without a colour image
- Fixed SetVideoVolume causing a crash on Android
- Added PlayVideoToImage command to play videos on to an image instead of displaying them on screen on iOS, Android, and Windows
- SetRawWritePath now works on Android, allowing you to set the write path to the public sdcard folder
- Changed GetDocumentsPath on Android to return the path to the public sdcard folder (which usually isn't an actual sdcard)
- Added SetDeviceCameraToImage to display the device camera onto an image, works on iOS, Windows, and Android 4.0.3 and above
- Added GetNumDeviceCameras to return the number of cameras available on the device
- Added GetDeviceCameraType to check whether a camera is front or back facing
- Removed PlayMusic on Linux to support a wider number of releases. Use PlayMusicOGG instead

## Build 2.0.20

- Breaking changes: this version cannot run previous bytecode, and old versions cannot run bytecode from this version
- Added new compiler directive #company_name to create a more unique write folder for your apps on Windows and Linux, see the Language section of the help for more details
- Removed 2048x2048 size limit on images, now only limited by device capabilities
- Fixed LoadImage down sizing images above the size limit causing sub images to have their offset values corrupted
- Be aware of GPU memory when using large images, a 4096x4096 image will use 64MB, regardless of its file size
- Fixed the debugger not being able to set a breakpoint on source files contained in folders in some cases
- Fixed FBX loader causing a crash on ARM devices
- Fixed frustum culling not working correctly when using an orthographic camera
- Added ViewFile() command to open a specified file in an external app, usually the system default for that extension
- Added ShareText() and ShareImage() commands to share text and images with external apps, asks the user to choose the app
- Fixed local notifications not showing on Android if the app is closed when in the background
- Fixed GetManagedSpriteCount always returning 0
- Fixed a crash in LoadObjectWithChildren when loading an object with a single bone
- Added OGG music commands that can play multiple music files at the same time, and allows seamless looping
- OGG music commands will work the same on all platforms
- Old music commands are now deprecated in favour of the OGG music commands
- Significantly improved image loading times on all platforms
- Fixed iOS export causing an error when the app is submitted to Apple
- Updated AGK to use libPNG 1.5.27 due to a security vulnerability
- Fixed a crash on Android when loading a 3D object that contains multiple primitive types (point, line, triangle, or polygon) in a single mesh
- Fixed some Android devices not keeping the correct GetPointerX and GetPointerY values after a touch release
- Fixed objects created with CreateObjectFromObjectMesh not being drawn properly
- AGK will no longer add a default precision to shaders on mobile devices if it detects the string "#if", which implies you have added it yourself
- Added joystick support to HTML5
- Fixed SetVSync command on HTML5
- Added sharedUserID field to Android export dialog so shared variables can be used in Tier 1
- Modified Android GetRawRotationVector commands to use the game rotation vector sensor where available, which isn't affected by magnets
- Fixed joystick ranges for non-XInput devices on Windows, causing some devices to report incorrect values
- Modified IDE export options to compile the project before exporting to make sure it is up to date
- Loading an image that is not a power of two in size will no longer pad it to the nearest power of two internally, unless SetGenerateMipmaps is set to 1
- Using SetImageWrapU or SetImageWrapV with mode 1 (repeat) on an image that is not a power of two will now do nothing
- CreateRenderImage can now use non-power of two sizes when the mipmap parameter is set to 0
- Fixed SetErrorMode(2) not displaying error messages properly on Android
- Fixed the stop broadcast button sometimes failing to stop the app on a device
- Fixed SetClearColor not working on HTML5
- Fixed Facebook warnings about Graph 2.0 calls
- Added option to iOS export to allow all orientations
- IDE export settings are now store inside the project file for each project
- Added GetInAppPurchaseLocalPrice() command to get the item price in the local currency
- Added GetInAppPurchaseDesciption() command to get the item description
- Added the Euro currency symbol to the default font
- Fixed a crash when trying to use joysticks on a Mac
- Updated Mac apps to be 64-bit, if you are using Tier 2 be sure to set your valid architectures build setting to x86_64
- Added SetTweenDuration() to change the duration of a tween after it has been created
- Fixed SetObjectCollisionMode() not creating collision data if used on an instance object when the parent has collision turned off and has no collision data of its own
- Added GetFacebookAccessToken to return the access token that can be used with graph API calls using the HTTP commands
- Updated RunApp() to work on Linux, Mac, and Raspberry Pi
- Fixed virtual buttons becoming distorted if broadcasting and app that uses a virtual resolution after an app that uses percentage coordinates

## Build 2.0.19

- Note that all platforms now behave the same way with UV scrolling, images must be a power of 2 in size to wrap properly
- Fixed Windows touch pen tap not triggering GetPointerPressed
- GetDeviceName will now return "html5" on HTML5
- Fixed edit boxes not working on HTML5
- Fixed Android not accepting SSL certificate chains if they were sent out of order
- Fixed LoadSound failing if the automatically assigned ID reaches 299, it would fail for one load before returning to ID 1 as expected
- Added GetPaused command to Windows to return 1 when the window loses focus
- Fixed HTML5 export crashing if the project contains lots of media files
- Fixed OpenBrowser() not working on HTML5
- Allowed RunApp() to use absolute paths, and to search the path environment variable for the executable on Windows
- HTML5 now exports to a folder
- Added option to use dynamic memory when exporting HTML5 to use more than 256MB of RAM

## Build 2.0.19 BETA

- Joystick X/Y commands on Windows will now return 0 instead of -1 if the axis doesn't exist
- Fixed instanced objects disppearing on Android if the app was sent to the background
- Fixed depth textures as render targets not working on Windows, they were being replaced by internal depth buffers
- Fixed transparent objects not rendering properly when drawn over the dynamic skybox
- Fixed loading shaders with more than about 4000 characters causing a crash if it uses lights or fog
- Add RunApp(), GetAppRunning(), and TerminateApp() commands to Windows
- Set Android sensor refresh rate to 60fps to try and improve the update frequency on some devices
- Transitioned Windows, iOS, and Mac to use the image loading routine used by the other platforms, namely libPNG and libJPEG
- Windows now only supports the officially supported image formats PNG and JPEG
- Removed the dependency on atls.lib on Windows which improves compatibility with Express versions of Visual Studio
- Updated Android lib to version r11b of the Android NDK
- Updated SetRenderToImage to use 24bit depth buffers instead of 16bit where possible
- Added Raspberry Pi support
- Modified OpenToRead and OpenToWrite to be able to access the GPIO pins on Raspberry Pi
- Added new sample project to demonstrate GPIO pin usage
- Fixed GetUnixFromDate not returning the correct value if the year parameter is a leap year
- Fixed an object getting incorrectly culled if it had more than one mesh
- Added shader guide to detail how to write shaders for use with AGK
- Added commands to get the size of an object or mesh
- Fixed CloneObject not copying animation names to the new object
- Changed SetCameraFOV command to accept an FOV value of 0 to generate an orthographic matrix instead of a projection matrix
- Increase Tier 1 stack size from 1024 to 32768 to allow more recursion
- Fixed SetLocalNotification not overwriting the message of an existing notification
- Fixed CancelLocalNotification causing future notifications to have a blank message
- Using SetSyncRate with a value of 60 no longer activates VSync, only the SetVsync command will activate VSync
- Added LoadImageResized to load an image whilst resizing it
- Added ResizeImage to resize and existing image
- Added SaveSharedVariable, LoadSharedVariable, and DeleteSharedVariable for sharing values between apps on iOS and Android
- Fixed GetDeviceLanguage not returning the correct value on Linux
- Fixed GetDeviceType on Linux not returning anything
- Updated CA bundle for Android SSL certificate verification
- Fixed PrintImage not correctly saving images that were created with SetRenderToImage
- Changed shaders to use high precision values for UV coordinates, some cases like 2048x2048 atlas animations need this
- Fixed DeleteTween causing a crash if an empty tween chain exists, or a tween chain exists that has not yet been played
- Added network socket commands to establish and receive TCP connections directly to other devices
- Modified subimage.txt to accept floating point values
- Added HTML5 export to the IDE

## Build 2.0.18

- Fixed a error in the default shader when an object or mesh has an image in both texture stage 0 and 1
- Assigning arrays using [1,2,3,4] with fewer values than its current size now shrinks the array
- Fixed a crash when using CloneObject on an object containing index data
- Fixed ChooseRawFile not returning the path to the file on Linux
- Fixed Visual Studio 2015 template project trying to compile in 64-bit mode, which is not supported on Windows
- Fixed Windows failing to setup the window if multisampling is not supported
- Fixed setup.agc file being ignored on Mac and Linux
- Fixed GetHTTPResponseReady on Windows never returning 1 when using GetHTTPFile
- Changed the ASC command to return unsigned values instead of signed values, only affects ASCII codes above 127
- Fixed Android apps failing to resume if SetRenderToImage is used
- Fixed SetObject3DPhysicsAngularVelocity not setting the angular velocity correctly
- Android apps now clean up their audio objects when quitting
- Fixed SetObjectScalePermanent not updating the collision object
- Updated GoogleAdsSDK on iOS to 7.7.0 and improved interstitial loading

## Build 2.0.17

- Fixed GetStringTokens2 not returning the correct string for index 1
- Fixed ObjectRayCast not working on scaled objects
- Fixed ChooseRawFile not working on Linux
- Fixed SetObjectTransparency mode 2 only working on Windows
- Fixed Mac generating an error report if an app is closed whilst playing a sound file
- Added the ability to assign array values at any time using [1,2,3,4]
- Fixed iOS not returning 1 for GetEditBoxChanged()
- Updated the Android Tier 2 guide for Android Studio
- Added a warning when the case of a filename does not match the file on disk, so that other platforms can help debug the file not found error this causes on Android
- Updated 3D format loader to the latest version which fixes many bugs and adds the FBX file format
- Removed the .m3 file format
- Fixed InstanceObject and CloneObject not working on animated objects
- Fixed GameCenterShowLeaderBoard command causing a crash on Android
- Added SetObjectAlphaMask as an alternative form of transparency that doesn't suffer from depth sorting issues
- Added SetObjectUVOffset and SetObjectUVScale to modify the UVs of an object's meshes
- Fixed memory leak when deleting objects that use index data
- Reduced memory usage of 3D objects by deleting unused copies of the vertex data
- Added CreateObjectFromHeightMap to create terrain type objects from height maps
- Fixed custom shaders used on 3D objects getting replaced with generated shaders
- Removed the 2 million vertex limit on meshes, now only limited by memory
- Frustum culling is now done per mesh instead of per object
- Enabled Windows apps to use up to 4GB of memory instead of just 2GB
- Fixed broadcaster sometimes sending files that hadn't changed
- Fixed normals being inverted when object scale is negative
- Increased maximum number of bones from 40 to 100, but some old devices may fail to draw objects with more than about 50 bones
- Fixed SetObjectShaderConstantByName not updating the shader values
- Added SetAntialiasMode to set Anti-aliasing on Windows, Mac, and Linux, it is off by default
- Added 3D fog commands to gradually fade objects over distance, and to create atmospheric effects
- Split the Android Tier 2 library into 3 parts to improve compile time, be sure to update your Android.mk file from the template project
- Added GetObjectBoneWorldAngleX and GetObjectBoneWorldQuatW, and others, to get the bone angle in world space
- Added RestoreWindow to unminimize a window on Windows, Mac, and Linux only
- Fixed debugger not being able to view strings in the variable window if the string contained a colon
- Added SkyBox commands to draw a horizon and movable sun behind all other objects
- Fixed SetShaderConstantByName and SetShaderConstantArrayByName not working on loaded shaders that use lights
- Added SetObjectDepthRange command to force the object to a specific depth value or range of values
- Fixed single channel greyscale PNG images not loading on Android
- Added a new sample project in AGKProjects/3D/Terrain that demonstrates terrain, fog, and the new sky box
- Fixed a crash when calling GetGameCenterExists on Android
- Added GetObjectHeightMapHeight to return the height of a terrain object at a specific point
- Added Chartboost functionality to Amazon APK export option
- Added SetAmazonAdDetails command to use Amazon Ads
- Added ShowFullscreenAdvertAdMob, ShowFullscreenAdvertChartboost, and ShowFullscreenAdvertAmazon commands to manually choose which provider to use
- Added GetFullscreenAdvertLoadedAdMob, GetFullscreenAdvertLoadedChartboost, and GetFullscreenAdvertLoadedAmazon to check advert availability
- CreateFullscreenAdvert is deprecated in favour of the above commands
- Added a new sample project in AGKProjects/Adverts/Interstitials to demonstrate the fullscreen advert commands
- Removed armv7s architecture from iOS apps to reduce executable file size by 33%, performance on iPhone 5 may be slightly reduced
- Added GetUnixTime command to return the current date and time in unix format
- Added local notification commands to schedule notifications for iOS and Android
- Added a new sample project in AGKProjects/Extras/ to demonstrate local notifications
- Fixed arrays with 1 element not being able to have a default value

## Build 2.0.16

- Fixed ObjectRayCast, and other collision commands, not working with cloned objects
- Fixed ObjectRayCast not working on scaled objects
- Added SetObjectMeshShader to set a shader on a per mesh basis
- Added GetObjectMeshVSSource and GetObjectMeshPSSource to get the source code for auto generated mesh shader
- Added SetWindowPosition to change the window position on screen on Windows, Mac, and Linux
- Modified the SetObjectMeshLightMap command to use the first set of UV coordinates if a second set does not exist
- Fixed exporting Amazon apps that use the Facebook commands having corrupt text during the Facebook loading screen
- Fixed ObjectRayCast sometimes not detecting the closest collision point when multiple intersections occur
- Fixed GPS commands sometimes reporting no GPS sensor on iOS 9.1
- Fixed Mac apps not being able to make HTTP connections on El Capitan
- Fixed SetObjectTransparency not recognising mode 2 as additive blending
- Adjusted the pixel light shader to support Android devices with low precision floats
- Increased maximum number of IAP products to 25 on both iOS and Android
- Fixed setting SetObjectLightMode to 0 causing a shader error on animated objects
- Added vector ID assert to GetObject3DPhysicsContactVector()
- Added command Get3DPhysicsRayCastObjectHit()
- Added command Get3DPhysicsRayCastContactPosition()
- Added command Get3DPhysicsRayCastClosestContactPosition()
- Fixed a Tier 2 bug in SaveObjectShape() command
- Fixed Help file for RayCast3DPhysicsObject()
- Fixed CreateObjectCapsule not creating a valid object
- Windows 8 and 10 no longer require the DirectX End-User Runtime to be installed, Windows 7 and below still require it for audio
- Objects will no longer rebuild their collision data when mesh vertices change if SetObjectCollisionMode is set to 0
- Fixed a crash when using CloneSprite on a sprite created from LoadSprite and then deleting the cloned sprite
- Fixed missing DLC menu on Mac IDE
- Fixed ChooseRawFile() not working on Mac El Capitan
- Added project name to source file tabs
- Fixed a crash when using file commands with an empty string as the file name
- Updated all Android Tier 2 projects to Android Studio
- Added Google Game Service Achievements to Android player, controlled using the GameCenter commands
- Added Amazon GameCircle Achievements to Amazon player, controlled using the GameCenter commands
- Updated iOS GameCenter for iOS 9

## Build 2.0.15d

- Changed all the asserts for physics to return from the function
- Added an Assert to all commands to check if the physics world exists
- Fixed bug in Delete3DPhysicsWorld() not clearing the DynamicsWorldArray()
- Fixed memory leak in Delete3DPhysicsWorld()
- Added a call to the Delete3dPhysicsWorld() when an app is finished broadcasting
- Fixed bug in ragdoll where it was not deleting from rigid body manager
- Updated information for Create3DPhysicsWorld() help about calculating scale factor and minimum size of objects that solver can handle
- Fixed quad objects failing to draw when the camera moves
- Added SetObjectScreenCulling to turn off frustum culling in certain cases
- Fixed DeleteAllSprites causing a crash if an edit box or text object exists
- Fixed SetMusicSystemVolume not having any effect on Linux
- Fixed SetMeshMemblockVertexNormal setting the position instead of the normal
- Fixed SetMeshMemblockVertexUV setting the position instead of the UV
- Changed LoadObjectWithChildren to ignore all scaling on bones, use SetObjectScalePermanent after loading instead
- Fixed loading Collada objects sometimes failing with duplicate node name

## Build 2.0.15c

- Fixed Linux GetRawKeyState returning 0 after one second when the key is held
- Fixed InstanceObject and CloneObject causing a crash when Sync is called between creating the original object and the copy
- Fixed music volume on Linux not having any effect
- Fixed music on Linux not looping
- Fixed ShowChooseImageScreen not working on Linux
- Fixed ShowChooseImageScreen not working on iOS
- Fixed bug in Create3DPhysicsCharacterController() when width equals depth
- Fixed PlayTweenChar not having any effect
- Fixed GPS commands not working on iOS 8 and 9
- Fixed CreateObjectFromMeshMemblock not creating the object properly
- GetObjectInScreen is now fully functional
- Fixed sending an Android app to the background causing 3D objects to disappear
- Fixed Android taking up to 15 seconds to create an HTTPS connection
- HTTPS connections using self signed certificates will now fail verification
- Added SetHTTPVerifyCertificate to turn off certificate verification in certain cases

## Build 2.0.15b

- Fixed a crash when using InstanceObject or CloneObject
- Fixed crash when using CreateFullscreenAdvert on Android
- Fixed Android apps not being able to resume after being sent to the background
- Fixed not being able to set breakpoints when debugging in Tier 1
- Added missing tier 2 include files

## Build 2.0.15

- Updated iOS libraries to iOS 9 and XCode 7
- Updated iOS Google Ads SDK to version 7.5.1
- Minimum supported version of iOS has increased from 5.1.1 to 6.0, this only affects the iPad 1
- Increased number of raw joysticks to 8. Note that Microsoft still limit XBox controllers to 4 per PC.
- Added Visual Studio 2015 lib and template
- Added ragdoll and character controller commands for 3D physics
- Fixed a bug with SetObjectShapeCylinder
- Fixed spelling of Create3DPhysicStaticBody() to Create3DPhysicsStaticBody()
- Fixed LoadObjectWithChildren() not loading some models when using an auto assigned object ID
- Fixed FindStringCount returning the wrong value
- Removed CompareStringIgnoreCase command
- Changed CompareString to have an ignoreCase parameter
- Fixed FixObjectPivot not working correctly on bone animated objects
- Added DLC menu to the IDE to access installed DLC packs
- Note that Tier 2 projects now require these include paths ../../bullet and ../../bullet/BulletCollision/CollisionShapes

## Build 2.0.15 Alpha

- Added a check for invalid Android package names containing a dot followed by a number during APK export
- Fixed putting ExitFunction as the final statement of the last Case block in a Select statement causing a crash
- Fixed compiler crash if a source file contained a line longer than 1024 characters
- Updated iOS AdMob SDK to 7.2.2 to fix a validation warning
- Updated HTTP commands on Android to support SSL connections to hosts that use a single cetificate for multiple domains, such as CloudFlare
- Updated HTTP commands on Android to use the latest version of the curl library
- If AGK on Windows fails to detect a sound output device it will now continue running instead of throwing an error
- Added a check for DrawEllipse with a radius of 0, previously this caused a crash
- Fixed GetSpriteHit and GetSpriteHitTest not checking all shapes when additional shapes have been added to the sprite
- Modified auto assigned IDs to start at 100,000 instead of 10,000
- Added support for the following 3D file formats: .X .3ds .md3 .smd .md5 .lwo. .ac .b3d .dae .3d .lws .ms3d .blend .m3
- Fixed ClearTweenChain accidentally deleting the chain ID
- Modified the debugger so it should work on a local machine with no network connection
- Fixed calling StepPhysics followed by adding some forces and then calling Sync accidentally clearing those forces
- .obj files no longer support a previous hack to add a second set of UV coords to the file
- .ago files now require a Mesh{} tag around all the vertex data
- There can now only be one directional light which is enabled by default and called the sun for ease of use
- Point light command names have been rearranged to be easy to read, e.g. SetLightPointPosition is now SetPointLightPosition
- Added FixObjectToObject to create hierarchies of objects, similar to limbs from DarkBasic
- Added FixObjectToBone to attach objects to bones in skeletal objects
- Added LoadObjectWithChildren to load a model file that contains limbs or bones, as well as any associated animation
- Added bone commands to get and set the position and rotation of any bones an object contains
- Added new string commands FindStringCount, FindString, FindStringReverse, CompareString, CompareStringIgnoreCase, ReplaceString, StripString, TrimString, TruncateString, CountStringTokens2, GetStringToken2
- Added SetTweenSpriteXByOffset and SetTweenSpriteYByOffset
- Added commands to create a custom tween with up to 4 float and 4 integer values, and read the values as it is running
- Added GetSpriteOffsetX and GetSpriteOffsetY to return the current offset point
- Added animation commands for 3D objects, they will only work on objects created with LoadObjectWithChildren
- Fixed the tween commands not working properly when broadcasting multiple apps to a device
- Fixed DeleteAllSprites preventing text and edit boxes from drawing
- Fixed DeleteFile not refreshing the file list when using GetFirstFile
- Fixed OpenBrowser on Windows sometimes not detecting the correct default browser
- Added MinimizeApp command to minimize an app
- Fixed CreateMemblockFromImage not working on render images on Android
- Fixed render images becoming blank on Android when an app is sent to the background
- Added SetObjectZBias to prevent Z fighting
- Changed GetEditBoxChanged to no longer reset after being called, it will now return 1 until the next Sync or Swap call
- Fixed GetSoundsPlaying not recognising when a sound is stopped with StopSoundInstance
- Added a Log command that accepts a float to return the logarithm of a value
- Fixed SetSpriteAnimation from moving and repeatedly scaling the sprite when the sprite has been scaled with SetSpriteScale
- Fixed a crash when using transparent 3D objects on 64bit devices
- Fixed memblocks not getting deleted between broadcasts of an app
- Object colors are no longer limited to 0-255, to allow over saturation and negative colors that subtract light
- Objects can now be lit by up to 8 vertex lights and 4 pixel lights, if more lights exist in the scene then the closest will be used

## Build 2.0.14b

- Changed SetSpriteSnap to function the same way it did in 2.0.13
- Corrected "uses adverts" check box in export IPA being inverted
- Updated IPA export process to match Apple changes

## Build 2.0.14

- Fixed LoadSpriteShader(filename) without specifying an ID not using the correct vertex shader
- Added a check for development profiles in the IPA export, use AdHoc or Store profiles instead
- Fixed error about missing file or directory when exporting Amazon or Ouya APK
- CreateMemblock command will now zero the memblock during creation
- Fixed SetScissor generating a warning in the debug log window
- Added GetSpriteScaleX() and GetSpriteScaleY()
- Added Spriter support with LoadSkeleton2DFromSpriterFile()
- Added ability to loop an animation a specified number of times with a loop count greater than 1
- Fixed iOS export with the advert box unticked not removing the advertising identifier (IDFA) from the app
- Fixed a bug where drawing more than 12000 sprites that share the same image could end up drawing nothing
- Added WriteString2 and ReadString2 that use a faster method of reading strings from a file
- Fixed GetResumed not being called on iOS after the app goes to sleep for the first time
- Updated iOS AdMob SDK to 7.2.1 which fixes a black screen after showing a full screen ad
- Updated Android Google Play Services (which includes the AdMob SDK) to 7.3
- Enabled copying of debug variable values using Ctrl-C on a selected row in the Variables window
- Enabled copying of debug log text using Ctrl-C on a selected row in the Debug Log window
- Fixed crash if an item is deleted that is currently being tweened
- Fixed Android not caching a full screen AdMob ad before the first call to CreateFullscreenAdvert
- Fixed DrawBox command sometimes producing boxes that aren't perfectly straight
- Fixed ResetTimer not resetting to exactly 0 on some platforms
- Fixed not being able to stop broadcasting if the app generated a lot of warnings while running
- Fixed switching edit boxes on Android sometimes hiding the keyboard for the new edit box
- Fixed SetTextScissor not working properly when SetViewOffset or FixTextToScreen are used

## Build 2.0.13

- Updated help files to fix squashed logo in the top left
- Fixed Android apps sent to background returning as a blank screen
- Fixed broadcasting sometimes not being able to stop
- Typing a new variable expression in the debug tab whilst the app is paused now evaulates it immediately
- Fixed occasional crash on Android when ending a broadcasted app
- Fixed Facebook commands causing a crash on Android when used in an exported app
- Fixed fullscreen window on Windows sometimes shifting sprite positions downwards
- Fixed exporting of iOS apps from the IDE not passing validation
- Fixed declaring a local variable immediately after declaring a global variable in a function causing the local declaration to be skipped
- Fixed having a global variable declaration on the first line in main.agc causing a compiler crash
- Fixed resizing arrays with more than 2 dimensions using .length on the base array causing a crash
- Changed IDE project file to always save paths with forward slashes to make them portable across platforms
- Updated Chartboost SDK on Android to 5.2.0
- Added option to APK export to support expansion files, currently these can only contain video files and are loaded with LoadVideo("expansion:MyFile.mp4")
- Fixed SaveSound producing corrupt WAV files
- Fixed IPA export sometimes producing an error when nothing was wrong
- Added xxhdpi and xxxhdpi icons to the Android interpreter, when exporting use a 192x192 icon from now on
- Added new Android Tier 2 project interpreter_android_expansion that supports expansion files and builds with API 21
- Fixed tweens not changing a value if the start and end values are the same
- Added tween interpolation mode of -1 to turn off interpolation for a specified value
- Fixed tween chains containing delays jumping to the first frame of the next tween before the delay was finished
- Added SetTweenChainTime to jump to a specific time in the tween chain
- Added GetTweenChainEndTime to return the total length of the tween chain
- Fixed iOS exported apps being able to change orientation during startup before SetOrientationAllowed can take effect
- Fixed iOS exported apps always resuming in the initial interface orientation instead of the current interface orientation, if allowed
- Changed the Android text input method to use a hidden Android editbox to receive input, this should support third party input methods
- Fixed Android keyboard not being able to accept input on Android 5.0 when in landscape mode

## Build 2.0.12

- Fixed an occasional crash caused by calling GetDeviceID()
- Fixed enlarging a multi-dimensional array using .length sometimes causing a crash
- Added a media refresh call after PrintImage() on Android to make the file appear to external apps
- Fixed repeated broadcasting apps leaking memory on the receiving device
- Fixed saving an image to the pictures folder with PrintImage on Android not refreshing the file system
- Fixed Android sensors all returning zero until the app is sent to the background and resumed
- Fixed a crash when passing a type returned from one function into multiple sub functions
- Fixed render images not being restored properly after resuming on Android
- Added SetEditBoxCursorPosition command to bring a certain portion of the text into view
- Fixed iOS exported apps not having the beta entitlement used for the new TestFlight implementation
- Fixed iOS exported apps missing the push notification entitlement
- Fixed network messages sent from one client to another not being received
- Added option to iOS export to add or remove the Advertising Identifier from the exported app
- AGK apps run on Windows will remember their last window position when closed so they don't always start in the center of the screen
- Changed app closing on Android to use the finish activity method rather than force quitting the app, which looks like a crash to some devices
- Added debugger to IDE

## Build 2.0.11

- Fixed only being able to export the iOS player when no project is open
- Added Linux IDE, compiler, broadcaster, and player
- Fixed runtime errors in exported apps closing the app instead of displaying the error
- Made Android broadcast app paths case sensitive to match their exported versions
- Fixed a runtime error about no instructions found when assigning an array of strings some default values
- Fixed arrays of strings larger than their default values not initialising the rest to the empty string
- Changed export app name to accept a wider variety of characters
- Changed Random2(int,int) to accept and return values in the range -2,147,483,648 and 2,147,483,647
- Fixed iOS export sometimes not finding the Team ID in the provisioning profile
- Fixed videos not stopping on Android when the device is locked or goes to sleep
- Fixed landscape apps on Android sometimes continuing to run when the app is put to sleep
- Fixed .OBJ files taking a long time to load
- Fixed SeekMusic on Android always using absolute positioning even when mode is set to 1
- Allowed function parameters to have a new line after a comma
- Fixed GetVideoPlaying on Android still returning 1 when the video is paused
- Modified Tier 2 template project on Mac to use a more reliable method when fullscreen define is set to 1
- Modified Chartboost on Android to cache interstitials to improve loading time
- Fixed using backslashes in #include paths not working on Mac
- Fixed bitwise NOT operator "!" actually doing a boolean NOT
- Fixed binary and hexadecimal numbers not being able to represent negative numbers
- Changed bitwise shift right to use an unsigned shift rather than a signed shift
- Updated Facebook SDK to version 3.22.0 on iOS and Android
- Added build number field to iOS export dialog
- Added option to make an iPhone only or iPad only app to the iOS export dialog
- Added 180x180 icon to exported iOS apps
- Added splash screen fields to iOS export
- Fixed using SetSpriteShape on sprites with images created using SetRenderToImage not being able to calculate a polygon shape
- Added build option to turn off Steam integration when testing apps with the IDE
- Added music commands to Linux vesion (requires libavcodec54 and libavformat54 packages)
- Added 32 bit version of AGK for Linux

## Build 2.0.10

- Any AGK players that have been compiled manually will need to be updated to work with this version, and AGK players for this version will not work with old bytecode
- Fixed a crash on Mac if loading an image greater than 2048x2048 that isn't divisable by an appropriate power of 2
- Fixed Blackberry lib missing SetSpriteAdditionalImage command
- Added support for Visual Studio 2013
- Updated the guides section of the help files
- Fixed push notifications not working on iOS 8 and sometimes freezing the app
- Fixed parsing of #insert causing an error
- Removing an item from an array with .remove() now initialises that array index back to zero if it is reused
- Fixed a compiler error when using a variable with inc or dec above the point where it is initialised
- Fixed DrawLine, DrawBox, and DrawEllipse sometimes having the wrong color value when rendering to an image
- Fixed For-Next loops defined in functions failing if the Step value is negative on one call and positive on another
- Set the default file encoding for new files to Windows-1252 to support extended ASCII
- Added Steam overlay to Windows interpreter when run from the IDE
- Fixed SetGlobal3DDepth not working and sprites always appearing in front of 3D

## Build 2.0.9

- Fixed DeleteTween crashing if the tween is currently in use
- Fixed arrays declared without a type but with a comment after them not appearing in the symbols list
- Fixed full screen adverts sometimes getting cropped
- Added support for Amazon controller trigger buttons
- Changed Android fragment shaders to use highp precision if device claims support, since some devices incorrectly implement mediump as lowp. This may reduce performance so you are encouraged to override it with "precision mediump float;" if you want to force it back to mediump in all cases
- Fixed Mac LoadImage with the BlackToAlpha parameter set to 1 not working
- Fixed misspelling in the Android location permission causing it to fail
- Fixed GetSoundMaxRate on Android returning the minimum rate instead
- Fixed SetRawMousePosition not working properly on Mac
- Fixed #insert not being recognised by the compiler
- Fixed a bug causing IsSupportedDepthTexture to not be recognised as a valid command
- Fixed FacebookPostOnMyWall crashing if called when not logged in
- Added Blackberry support
- Fixed cut/copy/paste in Mac IDE dialog boxes not working properly
- Fixed cut/copy/paste in Mac and Windows IDE dialog boxes if the default key bindings are changed
- Fixed Mac menu bar not updating its shortcuts if the default key bindings are changed
- Fixed Android apps freezing when rotating the device after using SetScreenResolution
- Added build option to connect directly to a device IP for when broadcasting can't detect the device
- Fixed interpreter sometimes disconnecting from the IDE after broadcasting an app
- Fixed scissor commands not working when using SetRenderToImage
- Added SetSpriteAdditionalImage command to set multiple texture stages per sprite for use with shaders

## Build 2.0 Alpha 8

- Opening configuration files no longer adds them to the current project
- Fixed a crash when deleting an image assigned to a cloned sprite
- Fixed local function variables not being assigned their default value
- Fixed float variables not accepting a default integer value
- Added Alt key code for Windows
- Allowed array default values to span muiltiple lines
- Fixed SetBorderColor not working properly on Mac
- Added #option_explicit and #insert to the help files
- Fixed using Exit, Continue, or ExitFunction inside a Case statement causing stack corruption
- Removed the ability to use Goto and labels inside select statements due to stack corruption
- Fixed a crash when returning an array from a function that was declared inside that function
- Fixed global variables defined in functions with AS in a comma separated list creating both a global and local variable
- Added Spine commands to get animated bone positions in world coordinates
- Added Spine commands to get skeleton root position
- Added CreateFullscreenAdvert command to display AdMob interstitial ads
- Added SetChartboostDetails to allow the advert commands to display Chartboost ads (currently fullscreen only)
- Changed default shader version on Windows to GLSL 110 to support OpenGL 2.0 cards such as old Intel integrated graphics
- Added support for using "#version " at the beginning of Windows shaders to allow higher versions
- Added GetRawGPSAltitude to all platforms
- Fixed Spine sprites sometimes disappearing when near the edge of the screen
- Changed iOS magnet sensor commands to use the calibrated magnetic field
- Creating a new project with a path that doesn't end in a slash no longer causes an error when compiling
- Fixed broadcasting sometimes not sending updated files if the device time was ahead of the host time
- Fixed DeleteTween causing a crash on Android
- Added XInput support for XBox 360 controllers on Windows
- Added GetRawJoystickConnected to detect if a joystick was removed or reconnected
- Rearranged joystick button numbers on Mac so they match Windows and Android
- Changed SetScreenResolution to only accept width and height
- Added SetWindowSize to change window size and fullscreen modes instead
- IDE now remembers the order of tabs within a project
- When opening a project the IDE now opens files at last known cursor position
- Added install dialog to IDE Tools menu to allow manual installation of projects and tier 2 files
- Added SetCameraAspect to change the aspect ratio when rendering 3D

## Build 2.0 Alpha 7.1

- Fixed repeatedly pressing the back button crashing Android
- Fixed GetResumed() not working in tier 1
- Fixed "AGK Projects" folder getting installed in the "All Users" documents instead of the current user
- Added GetDocumentsPath() command to get the current user's documents folder
- Fixed iOS lib not working with iOS 8 SDK
- Upgraded iOS libs and projects to iOS 8
- Updated AGK icon
- Made APK export icon optional
- Made IPA export icon optional
- Fixed Close All Projects menu option not working
- Fixed Mac video position being incorrect if repositioned every frame
- Fixed a crash on Windows when switching music tracks

## Build 2.0 Alpha 7

- Removed dialog asking to create the new folder when creating a new project
- Updated the main.agc template to include window size commands
- Creating a new project no longer creates a setup.agc by default, it can still be used if desired
- Moved default installation path for "AGK Projects" folder to inside "My Documents" on Windows
- Moved AGK write folder for apps from "My Documents/AGK" to "AppData/Local/AGKApps" on Windows
- Creating a new project will no longer overwrite main.agc if it already exists in the project folder
- Fixed compiler path being incorrect on Windows
- Fixed Mac IDE not liking spaces in its path
- Fixed a bug preventing arrays of types being passed into functions
- Attempted to target MacOS 10.7, unable to test
- Added arm64 architecture to iOS lib
- Deactivated Twitter commands due to build problems with arm64
- Fixed message window not remembering its height in some cases
- Changed Windows interpreter so it will attempt to load an "icon.ico" file before defaulting to the AGK logo
- Fixed "open in new window" menu option not working
- Added IDE option to remember open projects when closing
- Fixed Mac compiler not replacing old .app file with the new version
- Added displaying of function parameters on typing a comma in addition to an open bracket
- Fixed broadcasted app not being able to play video if a previous app didn't delete its video
- Fixed Mac video position not matching the coordinates given
- Added SetSkeleton2DFlip to flip a skeleton in the horizontal or vertical axis
- Can now open a project or document's folder by right clicking on it in the side bar

## Build 2.0 Alpha 6

- Fixed joysticks on Mac
- Fixed escaped strings (using single quotes) not correctly escaping new line characters
- Fixed FileEOF on Android APK apps not being consistent with other platforms (did not affect broadcasted apps)
- Fixed Facebook photo downloads going to different folders on iOS and Android, they will now both be placed in the current folder
- Fixed SetSpriteShapeCircle() with setPhysicsDebugOn() not showing the correct position of the shape
- Fixed HTTP file uploads on iOS when using HTTP authentication
- Fixed adding new files to a project not updating the side bar properly
- Fixed assigning a variable the lowest possible integer value -2147483648
- Fixed syntax highlighting of hexidecimal numbers
- Fixed Dwmapi.dll sometimes causing a crash
- Added some themes for the main IDE look
- Added an IDE option to highlight other instances of the currently selected word (on by default)
- Fixed message window in Mac IDE getting progressively lower when auto hide is turned on
- Fixed paste not working in the Mac editor window
- Fixed Mac key bindings so they default to the Cmd key
- Added app broadcasting on the Mac
- Fixed Find In Files freezing the IDE on Mac
- Added Gyro/Magnetic/Rotation/AmbientLight sensor commands for Android
- Added Gyro/Magnetic/Rotation sensor commands for iOS
- Added GPS commands to Windows, Mac, Android, and iOS
- Removed redundant ultrabook sensor commands like inclinometer, these can be calculated from the accelerometer
- Separated documentation for input commands into a raw section and a universal section
- Added GetFileCount and GetFolderCount commands
- Added GetDeviceID command
- Added CopyMemblock command
- Fixed Mac IDE sometimes saying compilation failed without showing the compiler errors
- Added runtime error for integer division by zero
- Updated help files for iOS and Android push notifications
- Added SetPushNotificaitonKeys so the AGKHelper.java file doesn't have to be edited
- Added export APK option to the IDE
- Fixed network bug where a disconnected socket would prevent the broadcaster reconnecting
- Added export to IPA option for Mac users
- Added menu item to generate an Android keystore
- Added menu option to generate the iOS AGK Player on Mac

## Build 2.0 Alpha 5

- Fixed Compile/Run/Debug buttons becoming enabled before a project was opened
- Added tool tips to the Compile/Run/Debug buttons to mention a project must be open to enable them
- Fixed compiler error "Invalid path for CopyFile" sometimes appearing due to a memory error
- Modified the default syntax highlighting color scheme and added support for alternate color schemes
- Merged the project menu into the File menu
- Fixed the symbols list not rendering multidimensional arrays properly
- Changed toolbar New and Open buttons to refer to projects instead of files
- Fixed adding a new file to a project when the save dialog is cancelled
- Fixed native dialogs not redrawing properly if the Windows Aero theme is turned off or not applicable
- Fixed interpreter not responding during long loading routines
- Fixed saving new project file not defaulting to the project path
- Fixed the project open/import dialogs ignoring the native dialog setting
- Creating a new project now creates the default files main.agc and setup.agc in the project folder
- Fixed declarations like "global dim myarray" not appearing in the symbols list correctly
- Fixed indentation settings to stop converting tabs to spaces on saving
- Simplified indentation settings to be global only, which are changed in the preferences dialog
- Auto indentation now recognises AGK keywords like DO and IF as valid targets for indenting the next line
- Pressing F1 will now look for a command at the current cursor position and display the relevant help page
- Trying to load a project file with Open File will prompt to open it as a project instead
- Fixed single quote strings not being recognised
- Fixed SetErrorMode(2) on mobile devices not showing the error
- Improved SetErrorMode(2) in tier 1 by adding the line number and include file to any errors
- The symbol sidebar now recognises variables inside types, and constants
- Autocomplete will now suggest variables inside types after a period
- Code folding now recognises select statements and cases
- Added the commands FoldStart and FoldEnd to manually fold sections of code
- Added the ability to auto hide the message window when not focused
- Added a separate broadcast button instead of having run and broadcast as one button
- Added session files to the project file so it remembers what files were open

## Build 2.0 Alpha 4

- Fixed crash when deleting a physics sprite while looping over another sprite's contacts with GetNextContact
- Fixed crash when deleting the most recently created sprite or text object
- Reduced memory leak when playing OGG files, but can't remove it completely, I recommend M4A or MP2 for royalty free music
- Completely new compiler that should solve a lot of tier 1 issues
- Types can now contain arrays
- Types and arrays can now be passed by reference into functions
- Types and arrays can now be passed by value into and out of functions
- Arrays can now be sorted and searched
- Completely new IDE that should help write tier 1 apps
- IDE now supports auto complete
- IDE now supports code folding for AGK specific structures
- IDE now has symbol parsing to show you what functions/types/variables exist in a file
- Compiler errors now appear in the IDE instead of in message boxes and can now show multiple errors at once
- Fixed a memory leak when loading and deleting Spine skeletons
- Upgraded Android to NDK version r9d

## Build 2.0 Alpha 3

- Fixed crash when deleting an image assigned to a currently active frame buffer
- Fixed crash when a shader fails to compile with a lot of errors
- Fixed a bug where text greater than depth 0 would not display
- Added all features from Alpha 2 to Android
- Added all features from Alpha 2 to iOS and Mac except for sound balance
- Added all features from Alpha 2 to Blackberry except new music commands, video meta data commands, and SetScreenResolution
- Added new command InAppPurchaseSetKeys to set public keys unique to each app
- Added new random number commands Random2() that have a longer period before repetition and greater range
- Fixed LoadSkeleton2DFromSpineFile scale parameter not working
- Fixed sprites not appearing on screen if any sprites were drawn with SetRenderToImage active

## Build 2.0 Alpha 2

- Fixed tier 2 libs for VS2010
- Fixed AddTweenChainCamera
- Fixed Spine skeletons sometimes not being transparent
- Fixed shader error message on ATI cards
- Fixed crash when closing an app that used SetRenderToImage
- Attempted to fix missing pixel in DrawBox, may be GPU dependent
- Fixed DrawEllipse having some incorrect pixel colors when using gradients
- Fixed skeletons disappearing when using SetViewOffset
- Added commands to get properties of skeleton bones
- Fixed particles appearing behind sprites at the same depth
- Fixed skeletons always appearing above everything else
- Added commands SetSkeleton2DDepth, FixSkeleton2DToScreen, GetSkeleton2DExists, DeleteSkeleton2D
- Added commands GetSkeleton2DBoneX, GetSkeleton2DBoneY, GetSkeleton2DBoneAngle

## Build 2.0 Alpha 1

- Fixed GetPointerX and GetPointerY being affected by interaction with virtual buttons and joysticks
- Fixed SetSpritePhysicsDelete not clearing the SetSpritePhysicsIsSensor attribute
- Added Quad object primitive for drawing full screen shaders
- Added SetRenderToImage for drawing to images instead of the screen
- Added SetRenderToScreen to return drawing to the screen
- Added SetScreenResolution to modify the resolution of the final render target, and the window size on platforms that use windows
- Modified sprites to set their transparency mode based on whether their image contains transparent pixels unless previously overridden by SetSpriteTransparency
- Added new additive blend mode for sprites with SetSpriteTransparency
- Added new additive blend mode for particles
- Fixed memory leak when changing orientation on iOS
- Fixed memory leak when deleting 3D objects
- Fixed memory leak when setting the default font image
- Added ellipse and rectangle drawing commands
- Added random particle rotation controlled with a min and max setting
- Added particle size modification based on keyframes
- Added particle offset command to change existing particle positions
- Added sound instance commands to change volume, playback rate, and balance per instance
- Modified sound looping to allow looping a fixed number of times before stopping
- Added sound memblock commands
- Added save sound command
- Added music seeking and music duration commands
- Added file memblock commands to convert between files and memblocks
- Added memblock string commands to get and set strings
- Added copy memblock command to copy a portion of one memblock to another
- Added skeleton commands for 2D sprite animation with Spine support
- Added tween commands inspired by TrezSoft

## Build 1.08.19

- Fixed OpenBrowser not working with tel: and mailto: addresses on Android
- Fixed music not looping after using SetFolder or SetCurrentDir commands
- Fixed screen tearing when using fullscreen apps on Windows
- Fixed GetSpriteInBox with sprites using the circle shape
- Fixed GetSpriteCollision between world sprites and fixed to screen sprites

## Build 1.08.18

- Fixed passing UDTs to functions not working in some cases
- Fixed Windows tier 2 templates not having mouse wheel functionality
- Fixed Android crashing when passing a URL to OpenBrowser that doesn't have a protocol
- Fixed Blackberry GetInternetState returning undefined values.
- Fixed iOS edit box cursor not moving properly when tapped

## Build 1.08.17

- Fixed iOS edit box cursor not working properly in some cases.

## Build 1.08.16

- Fixed Mac tier 2 apps not receiving key pressed and released events
- Fixed print text appearing behind opaque sprites with depth 8 or less
- Fixed template_android_lite project not compiling
- Fixed iOS edit boxes not responding to touch events to move the cursor
- Fixed a crash on Ouya if an app was started with a joystick held off center
- Fixed a crash when using virtual joysticks in multiple broadcasts to the AGK Player
- Reduced memory footprint of font images

## Build 1.08.15

- Fixed crash on some Android devices that try to send the app to the background before it is initialised
- Fixed crash on Ouya when too many input events are received
- Fixed crash on Ouya when sending the app to and from the background
- For those people compiling apps with the Android NDK please go to the AGK\IDE\platform\android\Source folder and view the readme file about updating an NDK file
- Fixed Ouya controllers not working with the joystick commands
- Removed Ouya key codes as they are now accessed through the joystick commands
- Fixed possible crash when using CreateImageFromMemblock every frame.
- Set SetImageSavePixels to default to 0 as it reduced performance when doing frequent image updates and performance gain in general was negligible
- Fixed built in point light shaders on Samsung Galaxy S3 and other Mali-400 devices
- Fixed GetMemblockPtr removing the memblock ID from the memblock
- Fixed SetMusicFileVolume not updating the volume whilst the file is playing
- Added lite versions of the Android and iOS templates and interpreters to exclude Facebook, Twitter, Push Notifications, and Game Center

## Build 1.08.14

- Fixed compiler not recognising array declarations with square brackets like ["a","b","c"]
- Updated offline help files
- Fixed images on iOS having the bottom row of pixels cut off when using SetIntendedDeviceSize
- Fixed GetOrientation on Android not responding to orientation changes after ResetTimer is used
- Fixed app broadcast sometimes failing with "already listening on port 5687" error

## Build 1.08.13

- Removed Default Location prompt unless using the location commands
- Fixed the IDE F1 context sensitive help not working on core language commands like "if" and "for"
- Changed timeout on HTTP connections to 6 seconds
- Modified the GetScreenBounds commands to return correct values when SetScissor(0,0,0,0) is not being used
- Fixed DrawLine when using a blue value between 128 and 192 not displaying correctly
- Added padding option to the Image Joiner utility to add extra pixels around images
- Windows apps now reset the mouse state when losing focus
- Added tier 2 command agk::GetMemblockPtr to get direct access to the memory
- Added tier 2 command cImage::LoadFromData to load uncompressed image data directly from memory
- Fixed GetTextHit when FixTextToScreen is used to function the same as the sprite versions

## Build 1.08.12

- Fixed tapping on an editbox sometimes not showing the keyboard
- Fixed back button crash on Galaxy Note 2
- For those people compiling apps with NDK go to the AGK\IDE\platform\android\Source folder and view the readme file about fixing an NDK bug.
- Fixed GetPointerPressed on devices with both mouse and touch inputs
- Fixed missing commands in the help files
- Text objects now use less memory but extended font images must match the format of normal font images, i.e. both must be fixed width, or both must be variable width.
- Fixed memory corruption bug when debugging in tier 2
- All Android projects MUST use the new AGKHelper.java file from the interpreter_android_prebuilt (tier 1) or template_android (tier 2) projects to avoid crashing. It is also recommended to copy the other java files from these projects to get the latest fixes.
- Rewrote Android video handling to allow pausing and resuming of videos without a jump
- Upgraded Android to API 10 (2.3.3) as the minimum version
- Removed ATL requirement from the VS2008 projects
- Added OUYA key codes 102-107 to the android interpreter (untested)
- Fixed camera and choose image commands on Android not returning valid images on some devices
- Fixed loading of large JPG images on Android
- Fixed pressing enter in an editbox not setting the GetEditBoxChanged flag
- Fixed a crash when deleting lots of images immediately after they are created
- Fixed crash with OpenToWrite when using the overwrite parameter
- Due to the above fix the 106 and 107 compilers are no longer compatible with the 108 player
- Fixed OpenToWrite not defaulting to overwrite when using no parameter
- Added support for x86 (Intel) devices running Android (anyone using NDK should copy the jni/x86 folder from the template_android project into their projects and note the change to jni/Application.mk)
- Added support for mouse wheel and middle mouse button on Mac and Windows (those using tier 2 be sure to update your Core.cpp files from the template project)
- Modified GetmultiTouchExists on Windows to detect touch screen support rather than assuming true, may still assume true on Windows 7 and 8 even if no touch screen exists.
- Changed DrawLine to draw lines that are less than 1 pixel in length as a dot.
- Fixed Blackberry hide keyboard button not ending text entry
- Added the following video commands to Blackberry: LoadVideo, PlayVideo, PauseVideo, StopVideo, DeleteVideo, GetVideoPosition, SetVideoDimensions, and GetVideoPlaying
- The following commands are not possible on Blackberry: GetVideoDuration, GetVideoWidth, GetVideoHeight
- Mac windows now resize themselves when they are bigger than the desktop resolution
- Changed the way Windows apps resize themselves when they bigger than the desktop resolution to maintain aspect ratio
- Added right ALT to Windows key input commands
- Reduced memory usage for text objects when using fixed width font images
- Fixed SetHTTPHost when using a username and password
- Fixed crash when using SendHTTPRequest with a large response string on iOS and Mac
- Fixed SetTextDefaultMagFilter and SetTextDefaultMinFilter not affecting extended characters
- Fixed SetEditBoxTextSize and SetEditBoxSize causing SetEditBoxWrapMode to behave incorrectly
- Stopped all sounds (in addition to music) when sending the app to the background on Android and Blackberry. Sounds will not be resumed like music so if you want a continuous sound playing you must use GetResumed to detect when it should be restarted.
- Fixed extended characters not displaying when using a variable width font
- Updated iOS AdMob SDK to prevent apps getting rejected for using the uniqueIdentifier

## Build 1.08.11

- Fixed pressing the sleep button on Android devices with the lock screen turned off not stopping music
- Fixed inneractive adverts sometimes not displaying
- Fixed GetImage when using a clear color other than black
- Fixed GameCenterShowLeaderBoard not showing the correct leader board
- Fixed PauseMusic/ResumeMusic on Blackberry restarting from the beginning
- Fixed GetResumed being triggered by the app start on all platforms
- Added HTTP commands to Blackberry
- Added message box command to Blackberry
- Fixed GetDeviceName crash on Blackberry
- Updated editboxes on blackberry to match the other platforms
- Fixed edit box cursor disappearing at small resolutions

## Build 1.08.10

- Fixed instance objects with images displaying incorrectly if the original object did not have an image
- Fixed a crash when using CloseNetwork immediately after HostNetwork
- Fixed a bug that meant large projects would sometimes fail to broadcast to the player
- Updated Android In App Billing to use version 3 of the API, should be more reliable
- Fixed a bug with alpha transparent sprites in GetImage results
- Fixed VS2010 libs
- Updated help files with the latest commands
- Changed InAppPurchaseAddProductID to add a parameter for the type of product being added

## Build 1.08.9

- Fixed GetObjectVisible always returning 0
- Improved performance when handling hundreds of text objects
- Fixed GetObjectDepthWrite returning values outside the range 0-1
- Fixed CloneObject crash on objects without indexed vertices
- Can now load GIF images with LoadImage
- Fixed Android memory leak when using Java helper functions
- Improved performance when using Sync with only 2D items
- Fixed AGKSplash.png splash screen on Android devices
- Added help description for SetObjectScale
- Fixed GetChosenImage on Android so that it returns 0 if the user cancelled
- Fixed memory leak on Android
- Changed Android PrintImage so that it saves the image to the pictures folder and increments the image name
- Fixed sprite sorting bug when using Render() without Update()
- Added check for extended ASCII characters in edit boxes that do not have an extended font image
- Completed Game Center commands
- Added command SetEditBoxExtendedFontImage to support extended ASCII characters
- Added parmater to RateApp(ID,title) to change the dialog box title text
- Added SetEditBoxUseAlternateInput to set whether the edit box will use the default text input screen or not
- Improved edit box apperance to be consistent across resolutions
- Improved quality of default Arial font image
- Fixed a not responding message when selecting an image from Picasa
- Changed the Android Message command to be an actual message box
- Fixed Android keyboard missing key presses
- Changed alpha blending when using GetImage to preserve opaque areas
- Improved video play back on Android, now less likely to crash.
- Fixed FacebookPostOnMyWall command
- Improved text creation speed
- Fixed crash on iOS when images greater than 1024 with an odd number of pixels in height get scaled down
- Fixed FacebookSetup on iOS so it now uses the given AppID instead of needing a project setting
- Fixed SetFolder on Android sometimes crashing with an empty string
- Fixed Android crash when back button pressed during text entry
- Improved text rendering speed when some of the letters are off screen
- Changed alpha blending when using GetImage to preserve opaque areas
- Fixed GetEditBoxChanged so it no longer misses updates on iOS
- Added InAppPurchaseRestore command for iOS
- Added SetIntendedDeviceSize command so AGK can scale down images on low resolution devices if you have designed your app for high resolution devices
- Fixed screen flash when app is rotated on iOS and Android
- SetSpriteImage now clears any existing animation frames for that sprite
- Fixed SetSpriteShapeBox with an offset box not being calculated correctly
- Fixed GetSpriteCollision between a sphere and an offset box sometimes being wrong
- Fixed bug on iOS when using AdMob adverts with an offset on the iPad 3 using incorrect position
- Fixed GetSpriteContactWorldX not returning the correct value in some situations
- Fixed GetPhysicsCollisionWorldX not returning the correct value in some situations
- Fixed GetSpriteYFromWorld not returning the correct value
- Fixed crash when deleting a joint if the sprite it was connected to has been deleted
- Changed GetResumed on Windows to return 1 when the user restores the AGK window from the background
- Fixed image filter on Android and iOS reseting to linear after resuming from the background
- Fixed GetDeviceLanguage on Windows
- Fixed cloned and instance objects appearing in front of transparent objects even when they are positioned behind
- Fixed crash when deleting transparent objects

## Build 1.08.8

- Fixed DeleteAllSprites not clearing everything from memory
- Fixed SaveImage on iOS and Android not saving PNG images properly
- Fixed CopyImage and SetImageMask modifying the wrong image in some rare cases
- Changed the draw order to draw opaque objects in the order they were created, useful when using sky boxes with depth write off
- Added Delayed DLL Loading to Compiler for Windows XP compatibility

## Build 1.08.7

- Fixed VS2010 LIB issue causing VS2010 projects not to compile

## Build 1.08.6

- Added FACEBOOK app back in apps folder, need to include this when building Android T1/T2 apps in Eclipse
- Updated T1 and T2 guides for Android and iOS to reflect newer SDKs being used now
- Added a collection of memblock commands for direct memory access
- Added conversion between images and memblocks for direct pixel access
- Changed GetHTTPResponseReady to return -1 if the current task has finished but returned an error
- Fixed tranparent 3D objects sometimes appearing behind opaque objects
- Fixed video playback bug on Android where playing after stopping wouldn't work
- Fixed video playback bug on iOS and Android where GetVideoPlaying would not immediately return 1 after PlayVideo
- Fixed long load time when using large strings in CreateText
- Fixed crash when using CloneObject
- Fixed SetFolder("..") not working
- Fixed UDT assignment in functions
- Fixed global or literal strings returning from functions
- Fixed END now forces exit even if in subroutines or functions

## Build 1.08.5

- Added a few more dummy commands and tweaks to Facebook commands (should be command set complete now)
- Fixed issue with Mac not allowing choose image and capture image to work properly
- Ensured Android, Mac, iOS and Windows platforms all working together

## Build 1.08.4

- Added ability to save image in JPEG format on iOS
- Added CloneObject command to copy an object
- Added InstanceObject command to copy an object whilst sharing 3D data
- Fixed Android videos not starting from the beginning when stopped
- Added code for Android in-app purchase, although may be broken, sometimes returns errors from Google Play
- Added PushNotificationSetup to register for push notifcations on iOS
- Added GetPushNotificationToken to get push notification token for the device
- Improved image loading time on all platforms
- Improved performance of SetFolder and SetCurrentDir
- Added GetDeviceLanguage to return the ISO 639 language code of the device
- Fixed crash if ResumeSprite was called before PlaySprite
- Added code for Ultrabook Sensors and Multitouch
- Allowed VS2008 project to use above features (works from XP through to Windows 8)
- Replaced SensorsAPI with LocationAPI for GPS longitude and latitude (100% success)

## Build 1.08.3

New V108 Commands:
- Added SetObjectScale command to scale an object in X, Y, or Z
- Added DrawLine command to draw 2D lines directly to the screen
- Added SetCameraRange command to set the near and far clip planes
- Added SetCameraFOV command to change the camera field of view angle
- Added Set3DGlobalDepth command to place all 3D objects at a specified sprite depth value
- Added LoadObject command that returns an ID
- Added LoadShader command that returns an ID
- Added WriteByte command to write single bytes to a file
- Added ReadByte command to read a single byte from a file
- Added RenderBack command to draw only the sprites behind 3D, Render() now only draws those in front of 3D
- Added SetObjectDepthReadMode to set the depth test function, if it passes the depth test the pixel is drawn, 0=never pass, 1=less than, 2=equal, 3=less than or equal, 4=greater than, 5=not equal, 6=greater than or equal, 7=equal, 8=always pass
- Added SetObjectDepthWrite to set whether a pixel that passes the depth test writes its depth value to the depth buffer
- Added SetObjectTransparency to set alpha transaprency on or off
- Added SetObjectCullMode to set the cull mode of the object 0=draw both front and back faces, 1=draw front faces, 2=draw back faces
- Added SetObjectVisible to set an object as visible or hidden
- Added GetObjectDepthReadMode returns the current depth func for this object
- Added GetObjectDepthWrite returns the current depth write mode for this object
- Added GetObjectTransparency returns the current transparency mode for this object
- Added GetObjectCullMode returns the current cull mode for this object
- Added GetObjectVisible returns the current visibility mode for this object
- Added GetObjectInScreen returns 1 if the object is in screen, 0 if not, this is only an estimate and may assume an object is on screen when it is actually not
- Added GetWorldXFromSprite converts sprite coordinates into world coordinates, for example the top of a sprite rotated by 90 would actually be to the right of the sprite in world coordinates
- Added GetWorldYFromSprite
- Added GetSpriteXFromWorld converts world coordinates into sprite coordinates
- Added GetSpriteYFromWorld
- Added GetScreenXFrom3D returns the screen coordinates of the given 3D point
- Added GetScreenYFrom3D
- Added Get3DVectorXFromScreen returns a vector pointing into the 3D world from the given screen coordinates
- Added Get3DVectorYFromScreen
- Added Get3DVectorZFromScreen
- Added DeleteAllImages deletes all images loaded with LoadImage or LoadSubImage
- Added DeleteAllSprites deletes all sprites created with CreateSprite, LoadSprite, or CloneSprite
- Added DeleteAllText deletes all text objects created with CreateText
- Added GetScreenBoundsLeft returns the edge of the screen in you chosen virtual resolution, this takes black borders into account to the left of the screen my be a negative value in your current virtual resolution
- Added GetScreenBoundsRight returns the edge of the screen taking black borders into account
- Added GetScreenBoundsTop returns the edge of the screen taking black borders into account
- Added GetScreenBoundsBottom returns the edge of the screen taking black borders into account
- Added GetReadPath to return the path of the current application exectuable
- Added GetLoadedImages returns the number of images loaded with LoadImage or LoadSubImage
- Added GetUnassignedImages returns the number of loaded images that are not currently assigned to a sprite or text object
- Added GetUnassignedImageFileName returns the file name of a specified unassigned image
- All tier 2 Windows projects must add "Dwmapi.dll" the linker option "Delay Loaded DLLs" to maintain Windows XP support
- Fixed edit boxes that are fixed to the screen not detecting mouse clicks properly
- Fixed iOS video when changing orientation, fixed iOS GetVideoPosition command
- Added Mac video playback suport
- Added Windows video playback suport
- Fixed a crash is DeleteImage was used on an image that had previously been used in SetTextDefaultFontImage
- Fixed occasional stutter in frame rate on Windows Vista and Windows 7
- Fixed mipmaps not working on some platforms and generating an error about glGenerateMipmap
- Fixed particles so they can use images loaded from atlas textures
- Returned default wrap mode to 0 (clamp) to solve some edge bleeding issues, use SetImageWrap to use mode 1 (repeat)
- Fixed compiler issue with round brackets crashing compiler, now prompts square bracket error
- Fixed bug with network integers causing a crash
- Fixed text extending beyond the edge of the text input box
- Added better network disconnetion detection, previously this would take up to 30 seconds to detect, now 5 seconds.
- Due to this network change 1083 clients cannot connect to pre-1083 servers, however 1083 servers can accept pre-1083 clients.
- For anyone implementing the AGK network spec a server must now respond to message ID 7 with message ID 6.
- Old Android Dev Kits need to download and install the latest Android SDK and select Tools & API 13 to install over any existing files you may have. Re-using the SDK folder location will help
- If Eclipse gives you problems, go to Help > Check For Updates to install missing elements
- In Android project fails to compile, enter project properties > Android and tick Android 3.2 then Apply

## 04/10/12 - Build 1.08.1

- Added Social, 3D, Sensor and Misc. commands
- Modified compiler to allow auto-conversion to JavaScript
- HTML5 Platform added as part of the Freedom-Engine deployment system
- Unified V108 command between AGK and Freedom-Engine
- Removed MeeGo and Bada from Platform Support (obsolete platforms)
- Replaced template projects with template creation guide

## 10/06/12 - Build 1.07.7

- Added error message to prevent accidental statement such as a=3=5
- Fixed compiler to allow a comment at the end of IF THEN ELSE statement
- Fixed compiler so REMSTART REMEND are now handled within SELECT statements
- Fixed UDT.customtype=UDT.customtype to account for offsets within UDT type
- Compiler no longer accepts an expression as a literal into a declaration
- Compiler prevents code from calling user functions with GOTO or GOSUB
- Increased the maximum size of strings returned from the STR(float) command
- Commented out 'Failed to get OpenGL extension glBindFramebufferEXT' warning

## 06/06/12 - Build 1.07.6

- Fixed GetImage(ID,x,y,w,h) command
- Fixed AGKSplash.png screen for new orientations
- Fixed android orientation for non-standard tablets
- Changed CreateSprite(filename) to LoadSprite(filename) and other small tweaks
- Added fix for small memory leak
- Fixed orientation changes on Android
- Fixed clear color bleeding around full screen sprites
- Made texture repeat the default wrap mode to reduce flickering issue
- Modified 1076 build to allow STARTTEXTINPUT to be extended with new parameter

## 23/05/12 - Build 1.07.5

- Modified orientation system to allow TRUE portrait and landscape modes (Android/iOS)
- Small tweaks to Scissor feature
- Solved a number of memory issues on the Android platform

## 17/05/12 - Build 1.07

- Changed DBPRO to AGKPROJ to remove old legacy compiler extensions
- Upgraded internal foundation to allow backward/forward compatibility between compiler & players
- Line numbers no longer corrupted during compile errors when #constants used
- Cannot pass string out of function via UDT fixed
- Teir 1 -> undim does not appear to work fixed
- Remmed out line still affect running the code fixed
- INC and DEC keyword not recognised fixed
- Tier1 a remark with accent desactivate a line of code fixed
- Constant declaration with remark fixed
- SELECT compiler crash fixed
- IDE: Core commands don't link to help fixed
- Not possible to transfer in a successive way UDT to functions fixed
- Fixed BUG001 - string can now be returned from a locally created UDT
- Fixed Mac library to allow AGK Player (Mac Store) to accept broadcast app in standby
- Fixed issue causing Mac App to quit prematurely
- Over 60 New commands (advert, HTTP, camera, image manipulation and saving)

## 16/11/11 - Build 1.06

- Updated Android Player to Version Code 3
- Final tweak for MeeGo On 106
- Fixed MeeGo app broadcasting for the version 1061 compiler
- Adding Android to 106 build
- Compiled final libs and players (iOS and Mac) for 106 build
- Fixed changing friction with existing physics contacts
- Fixed iOS code to not play music if iPod music is already playing
- Fixed a bug in the android make file
- Bada tweak to template (Bada 2 SDK)
- Simplified android makefiles
- Added icon the android interpreter
- Added android libs
- Made android text input box appear in portrait
- Changed iOS project to support 3.2 as a minimum version
- Increased compiler wait time when broadcasting, fixed samsung sound not muting when screen is locked
- Tweak compiler for AGK Viewer stability
- Corrected XIB files used in AdMob 4.2 work - killed 3.2 compatibility!
- Fixed issue with AGK Viewer not running on 3.2 devices
- removed scrapper code from ios player (not viewer)
- Added VSync command
- Fixed issue with AGK Viewer not sending the very latest coordinate back when pressed/touched. Affected virtual buttons.
- AGK Viewer further tweaks
- Fix for android devices that reject the default render buffer format (producing a black or corrupted screen)
- Removed 5 second timeout
- Tweaks to improve the free version of AGK
- Made busy waiting the default method of controlling sync rate, fixed loading of images with 87 pixels in height on Windows
- Changed iOS App Viewer to quit instead of run in the background
- Fixed iOS not shutting down sockets properly when closing
- Modified physics step code to not clear forces on manual step, only on sync
- Fixed bug where iOS may get stuck waiting for a socket to close
- Modified interpreter to broadcast to the compiler instead of the other way around, fixed time out bug for broadcasting large tier 1 projects
- Updated samsung bada libs, player and template for Bada 2.0.2
- New bada 2.0.2 removes need for simulator lib
- Changes to reference documentation.
- Fixed samsung template for sim and debug
- Updated tweaks to ensure source (T2) for meego and bada work
- AGK Viewer tweaks to sync well with Windows scraper app
- Fixed issues with AGK Viewer freezing Windows app when cancelled.
- Improved networking code to warn of firewall block
- fixed the XCODE4 template
- Scheduled Work for Build 107: Issues board fixes, New HTTP and ADVERT commands

## 24/10/11 - Build 1.05

- Added New Placement Editor into Utilities folder
- Updated tweaks to ensure source (T2) for meego and bada work better
- Removed debug file from Mac player
- AGK Viewer tweaks to sync well with Windows streamer
- Fixed issues with AGK Viewer freezing Windows app when cancelled.
- Improved networking code to warn of firewall block
- Fixed the XCODE4 template
- Cleaned up Tier 2 projects to compile first time (apps/templates)
- Added INTERPRETER_MAC\BUILD\RELEASE folder with final Mac binary
- Perfected AGK Viewer and AGK Player system.
- Added free version of Windows Tier 2 Lib into trial
- Ensured AGK Viewer broadcast does not crash when maximise Window
- Added better device emulation during AGK Viewer mode (fakes device name, device resolution) and resets app to beginning using new faked properties
- Finished AGK Viewer complete with re-start mode when iOS scraper mode detected - all examples work with AGK Viewer
- Adjusted AGK Viewer network to run in parallel to main AGK Player network (no more interference)
- Added multi-resolution support to new AGK Viewer, added touch input, accelerometer input
- Added new AGK Viewer app (replacement for AGK Player on App Store)
- Added support for accelerometer to be passed back from AGK Viewer to AGK Stream feature
- Fixed error causing LARGE programs to create VERY LARGE allocations of memory that some devices could not create
- Added code to detect when byte code memory allocation exceeds device limits and produces safe error message (not crash)
- Fixed issue causing arrays used before the DIM statement parsed to fail to compile even though subscript counts valid
- Fixed slow Samsung startup
- Fixed issue caused by LARGE AGK programs being expanded, but variable offsets within byte code not being processed properly
- Fixed polygon hit test bug
- Fixed virtual joystick image when aspect ratio changed
- Fixed DeleteText memory leak
- Fixed button text with scrolling view
- Fixed physics walls with SetPhysicsScale command