mirror of
https://github.com/photonstorm/phaser
synced 2024-11-24 21:53:59 +00:00
28 KiB
28 KiB
Change Log
V0.9.8
- Massive refactoring across the entire codebase.
- Removed Basic and GameObject and put Sprite on a diet. 127 properties and methods cut down to 32.
- Added a new headless renderer for non-display related performance testing.
- Added camera type to the CameraManager for future non-orthographic cameras.
- Added Camera.destroy - now clears down the FX and unregisters itself from the CameraManager.
- Added Camera.hide/show to hide Sprites or Groups from rendering (and removed corresponding hideFromCamera methods from Sprites/Groups)
- Heavily optimised Group so it no longer creates any temporary variables in any methods.
- Added Game.renderer which can be HEADLESS, CANVAS or WEBGL (coming soon)
- Added Sprite.render which is a reference to IRenderer.renderSprite, but can be overridden for custom handling.
- Refactored QuadTree so it no longer creates any temporary variables in any methods.
- The Sprite Renderer now uses a single setTransform for scale, rotation and translation that respects the Sprite.origin value in all cases.
- Sprite.modified is set to true if scale, rotation, skew or flip have been used.
- Added Tween.loop property so they can now re-run themselves indefinitely.
- Added Tween.yoyo property so they can reverse themselves after completing.
- Added Gravity to the Physics component.
- Removed Sprite.angle - use Sprite.rotation instead
- Optimised separateX/Y and overlap so they don't use any temporary vars any more.
- Added the new Physics.Body object to all Sprites. Used for all physics calculations in-game. Will be extended for Fixtures/Joints in future.
- Added SpriteUtils.setOriginToCenter to quickly set the origin of a sprite based on either frameBounds or body.bounds
- Added Sprite.Input component for tracking Input events over a Sprite
- Added Sprite.Input.useHandCursor (for desktop)
- Added Sprite.Input.justOver and justOut with a configurable ms delay
- Added Sprite.Events component for a global easy to access area to listen to events from
- Added Group.ID, each Group has a unique ID. Added Sprite.group (and Group.group) which is a reference to the Group it was added to.
- Added Group.addNewSprite(x,y,key) for quick addition of new Sprites to a Group
- Fixed Group.sort so the sortHandler is called correctly
- Added Group.swap(a,b) to swap the z-index of 2 objects with optional rendering update boolean
- Sprites dispatch new events for: killed, revived, added to Group and removed from Group.
- Added Input drag, bounds, sprite bounds and snapping support.
- Added the new ColorUtils class full of lots of handy color manipulation functions.
- Fixed issue in Camera.inCamera check where it wouldn't take into consideration the Sprites scrollFactor.
- Fixed issue with JSON Atlas loader incorrectly parsing the frames array.
- Fixed bug in FrameData.getFrameByName where the first frame of the array would always be skipped.
- Fixed bug where the Stage.backgroundColor property wasn't being saved correctly.
- Made Stage.bootScreen and Stage.pauseScreen public so you can override them with your own States now.
- Added the new OrientationScreen and Stage.enableOrientationCheck to allow for easy 'portrait/landscape only' game handling.
- Added fix to StageScaleMode for 180 degree portrait orientation on iPad.
- Added fix to orientation check so that it updates the input offsets correctly on rotation.
- Added support for minWidth and minHeight to game scale size, so it can never go below those values when scaling.
- Vastly improved orientation detection and response speed.
- Added custom callback support for all Touch and Mouse Events so you can easily hook events to custom APIs.
- Updated Game.loader and its methods. You now load images by: game.load.image() and also: game.load.atlas, game.load.audio, game.load.spritesheet, game.load.text. And you start it with game.load.start().
- Added optional frame parameter to Phaser.Sprite (and game.add.sprite) so you can set a frame ID or frame name on construction.
- Fixed bug where passing a texture atlas string would incorrectly skip the frames array.
- Added AnimationManager.autoUpdateBounds to control if a new frame should change the physics bounds of a sprite body or not.
- Added StageScaleMode.pageAlignHorizontally and pageAlignVertically booleans. When true Phaser will set the margin-left and top of the canvas element so that it is positioned in the middle of the page (based only on window.innerWidth).
- Added support for globalCompositeOperation, opaque and backgroundColor to the Sprite.Texture and Camera.Texture components.
- Added ability for a Camera to skew and rotate around an origin.
- Moved the Camera rendering into CanvasRenderer to keep things consistent.
- Added Stage.setImageRenderingCrisp to quickly set the canvas image-rendering to crisp-edges (note: poor browser support atm)
- Sprite.width / height now report the scaled width height, setting them adjusts the scale as it does so.
- Created a Transform component containing scale, skew, rotation, scrollFactor, origin and rotationOffset. Added to Sprite, Camera, Group.
- Created a Texture component containing image data, alpha, flippedX, flippedY, etc. Added to Sprite, Camera, Group.
- Added CameraManager.swap and CameraManager.sort methods and added a z-index property to Camera to control render order.
- Added World.postUpdate loop + Group and Camera postUpdate methods.
- Fixed issue stopping Pointer from working in world coordinates and fixed the world drag example.
- For consistency renamed input.scaledX/Y to input.scale.
- Added input.activePointer which contains a reference to the most recently active pointer.
- Sprite.Transform now has upperLeft, upperRight, bottomLeft and bottomRight Point properties and lots of useful coordinate related methods.
- Camera.inCamera check now uses the Sprite.worldView which finally accurately updates regardless of scale, rotation or rotation origin.
- Added Math.Mat3 for Matrix3 operations (which Sprite.Transform uses) and Math.Mat3Utils for lots of use Mat3 related methods.
- Added SpriteUtils.overlapsXY and overlapsPoint to check if a point is within a sprite, taking scale and rotation into account.
- Added Cache.getImageKeys (and similar) to return an array of all the keys for all currently cached objects.
- Added Group.bringToTop feature. Will sort the Group, move the given sprites z-index to the top and shift the rest down by one.
- Brand new Advanced Physics system added and working! Woohoo :)
- Fixed issue in Tilemap.parseTiledJSON where it would accidentally think image and object layers were map data.
- Fixed bug in Group.bringToTop if the child didn't have a group property yet.
- Fixed bug in FrameData.checkFrameName where the first index of the _frameNames array would be skipped.
- Added isRunning boolean property to Phaser.Tween
- Moved 'facing' property from Sprite.body to Sprite.texture (may move to Sprite core)
- Added Sprite.events.onDragStart and onDragStop
- A tilemap can now be loaded without a tile sheet, should you just want to get the tile data from it and not render.
- Added new Sprite.events: onAnimationStart, onAnimationComplete, onAnimationLoop
- Added in support for the Input component PriorityID value and refactored Input.Pointer to respect it. Rollovers are perfect now :)
- Added 2 new State functions: loadRender and loadUpdate, are called the same as render and update but only during the load process
- Fixed Input.stopDrag so it fires an onInputUp event as well from the sprite.
- Added support for a preRender state - very useful for certain types of special effects.
- Cameras are now limited so they can never be larger than the Game.Stage size.
- Added a new Button Game Object for easily creating in-game UI and menu systems.
- Fixed bug where Sprite.alpha wasn't properly reflecting Sprite.texture.alpha.
- Fixed bug where the hand cursor would be reset on input up, even if the mouse was still over the sprite.
- Fixed bug where pressing down then moving out of the sprite area wouldn't properly reset the input state next time you moved over the sprite.
- Added the Sprite.tween property, really useful to avoid creating new tween vars in your local scope if you don't need them.
- Added support for pagehide and pageshow events to Stage, hooked in to the pause/resume game methods.
- Extended Device audio checks to include opus and webm.
- Updated Loader and Cache so they now support loading of Audio() tags as well as Web Audio.
- Set Input.recordPointerHistory to false, you now need to enable the pointer tracking if you wish to use it.
- SoundManager will now automatically handle iOS touch unlocking.
- Added TilemapLayer.putTileWorldXY to place a tile based on pixel values, and putTile based on tile map coordinates.
- Dropped the StageScaleMode.setScreenSize iterations count from 40 down to 10 and document min body height to 2000px.
- Added Phaser.Net for browser and network specific functions, currently includes query string parsing and updating methods.
- Added a new CSS3 Filters component. Apply blur, grayscale, sepia, brightness, contrast, hue rotation, invert, opacity and saturate filters to the games stage.
- Fixed the CircleUtils.contains and containsPoint methods.
- Fixed issue with Input.speed values being too high on new touch events.
- Added Sprite.bringToTop()
- Added Stage.disableVisibilityChange to stop the auto pause/resume from ever firing.
- Added crop support to the Texture component, so you can do Sprite.crop to restrict rendering to a specified Rectangle without distortion.
- Added references to all the event listener functions so they can be cleanly destroyed.
- Fixed interesting Firefox issue when an audio track ended it fired another 'canplaythrough' event, confusing the Loader.
- Added the new PluginManager. Moved all the Camera FX over to plugins. Everything will be a plugin from now on.
- Added Sprite.transform.centerOn(x,y) to quickly center a sprite on a coordinate without messing with the sprite origin and regardless of rotation.
- Added Input.pollRate - this lets you limit how often Pointer events are handled (0 = every frame, 1 = every other frame, etc)
- Renamed the 'init' function to 'preload'. It now calls load.start automatically.
- Added CanvasUtils class, including ability to set image rendering, add a canvas to the dom and other handy things.
V0.9.6
- Virtually every class now has documentation - if you spot a typo or something missing please shout (thanks pixelpicosean).
- Grunt file updated to produce the new Special FX JS file (thanks HackManiac).
- Fixed issue stopping Phaser working on iOS 5 (iPad 1).
- Created new mobile test folder, updated index.php to use mobile CSS and made some mobile specific tests.
- Fixed a few speed issues on Android 2.x stock browser.
- Moved Camera context save/restore back inside parameter checks (sped-up Samsung S3 stock browser).
- Fixed bug with StageScaleMode.checkOrientation not respecting the NO_SCALE value.
- Added MSPointer support (thanks Diego Bezerra).
- Added Camera.clear to perform a clearRect instead of a fillRect if needed (default is false).
- Swapped Camera.opaque default from true to false re: performance.
- Updated Stage.visibilityChange to avoid pause screen locking in certain situations.
- Added StageScaleMode.enterLandscape and enterPortrait signals for easier device orientation change checks.
- Added StageScaleMode.isPortrait.
- Updated StageScaleMode to check both window.orientationchange and window.resize events.
- Updated RequestAnimationFrame to use performance.now for sub-millisecond precision and to drive the Game.time.update loop.
- Updated RequestAnimationFrame setTimeout to use fixed timestep and re-ordered callback sequence. Android 2/iOS5 performance much better now.
- Removed Stage.ORIENTATION_LANDSCAPE statics because the values should be taken from Stage.scale.isPortrait / isLandscape.
- Removed Stage.maxScaleX/Y and moved them into StageScaleMode.minWidth, minHeight, maxWidth and maxHeight.
- Fixed Stage.scale so that it resizes without needing an orientation change first.
- Added StageScaleMode.startFullscreen(), stopFullScreen() and isFullScreen for making use of the FullScreen API on desktop browsers.
- Swapped Stage.offset from Point to MicroPoint.
- Swapped Stage.bounds from Rectangle to Quad.
- Added State.destroy support. A states destroy function is called when you switch to a new state (thanks JesseFreeman).
- Added Sprite.fillColor, used in the Sprite render if no image is loaded (set via the property or Sprite.makeGraphic) (thanks JesseFreeman).
- Renamed Phaser.Finger to Phaser.Pointer.
- Updated all of the Input classes so they now use Input.pointers 1 through 10.
- Updated Touch and MSPointer to allow multi-touch support (when the hardware supports it) and created new tests to show this.
- Added Input.getPointer, Input.getPointerFromIdentifier, Input.totalActivePointers and Input.totalInactivePointers.
- Added Input.startPointer, Input.updatePointer and Input.stopPointer.
- Phaser Input now confirmed working on Windows Phone 8 (Nokia Lumia 920).
- Added Input.maxPointers to allow you to limit the number of fingers your game will listen for on multi-touch systems.
- Added Input.addPointer. By default Input will create 5 pointers (+1 for the mouse). Use addPointer() to add up to a maximum of 10.
- Added Input.position - a Vector2 object containing the most recent position of the most recently active Pointer.
- Added Input.getDistance. Find the distance between the two given Pointer objects.
- Added Input.getAngle. Find the angle between the two given Pointer objects.
- Pointer.totalTouches value keeps a running total of the number of times the Pointer has been pressed.
- Added Pointer.position and positionDown. positionDown is placed on touch and position is update on move, useful for tracking distance/direction/gestures.
- Added Game.state - now contains a reference to the current state object (if any was given).
- Moved the Input start events from the constructors to a single Input.start method.
- Added Input.disabled boolean to globally turn off all input event processing.
- Added Input.Mouse.disabled, Input.Touch.disabled, Input.MSPointer.disabled and Input.Keyboard.disabled.
- Added Device.mspointer boolean. true if MSPointer is available on the device.
- Added Input.onDown, onUp, onTap, onDoubleTap and onHold signals - all fired by the mouse or touch.
- Added Input.recordPointerHistory to record the x/y coordinates a Pointer tracks through. Also Input.recordRate and Input.recordLimit for fine control.
- Added Input.multiInputOverride which can be MOUSE_OVERRIDES_TOUCH, TOUCH_OVERRIDES_MOUSE or MOUSE_TOUCH_COMBINE.
- Added GameObject.setBoundsFromWorld to quickly set the bounds of a game object to match those of the current game world.
- Added GameObject.canvas and GameObject.context. By default they reference Stage.canvas but can be changed to anything, i.e. a DynamicTexture
- The new canvas and context references are applied to Sprite, GeomSprite and TilemapLayer
- Added DynamicTexture.assignCanvasToGameObjects() to allow you to redirect GameObject rendering en-mass to a DynamicTexture
- Added DynamicTexture.render(x,y) to render the texture to the Stage canvas
- Added Basic.ignoreGlobalUpdate - stops the object being updated as part of the main game loop, you'll need to call update on it yourself
- Added Basic.ignoreGlobalRender - stops the object being rendered as part of the main game loop, you'll need to call render on it yourself
- Added forceUpdate and forceRender parameters to Group.update and Group.render respectively. Combined with ignoreGlobal you can create custom rendering set-ups
- Fixed Loader.progress calculation so it now accurately passes a value between 0 and 100 to your loader callback
- Added a 'hard reset' parameter to Input.reset. A hard reset clears Input signals (such as on a state swap), a soft (such as on game pause) doesn't
- Added Device.isConsoleOpen() to check if the browser console is open. Tested on Firefox with Firebug and Chrome with DevTools
- Added delay parameter to Tween.to()
- Fixed bug where GeomSprite.renderOutline was being ignored for Circle objects
- Fixed bug with GeomSprite circles rendering at twice the size they should have been and offset from actual x/y values
- Added Sprite.cacheKey which stores the key of the item from the cache that was used for its texture (if any)
- Added GameMath.shuffleArray
- Updated Animation.frame to return the index of the currentFrame if set
- Added Quad.copyTo and Quad.copyFrom
- Removed the bakedRotations parameter from Emiter.makeParticles - update your code accordingly!
- Updated various classes to remove the Flixel left-over CamelCase parameters
- Updated QuadTree to use the new CollisionMask values and significantly optimised and reduced overall class size
- Updated Collision.seperate to use the new CollisionMask
- Added a callback context parameter to Game.collide, Collision.overlap and the QuadTree class
- Stage.canvas now calls preventDefault() when the context menu is activated (oncontextmenu)
- Added Point.rotate to allow you to rotate a point around another point, with optional distance clamping. Also created test cases.
- Added Group.alpha to apply a globalAlpha before the groups children are rendered. Useful to save on alpha calls.
- Added Group.globalCompositeOperation to apply a composite operation before all of the groups children are rendered.
- Added Camera black list support to Sprite and Group along with Camera.show, Camera.hide and Camera.isHidden methods to populate them.
- Added GameMath.rotatePoint to allow for point rotation at any angle around a given anchor and distance
- Updated World.setSize() to optionally update the VerletManager dimensions as well
- Added GameObject.setPosition(x, y)
- Added Quad.intersectsRaw(left, right, top, bottom, tolerance)
- Updated Sprite.inCamera to correctly apply the scrollFactor to the camera bounds check
- Added Loader.crossOrigin property which is applied to loaded Images
- Added AnimationManager.destroy() to clear out all local references and objects
- Added the clearAnimations parameter to Sprite.loadGraphic(). Allows you to change animation textures but retain the frame data.
- Added the GameObjectFactory to Game. You now make Sprites like this: game.add.sprite(). Much better separation of game object creation methods now. But you'll have to update ALL code, sorry! (blame JesseFreeman for breaking your code and coming up with the idea :)
- Added GameObjectFactory methods to add existing objects to the game world, such as existingSprite(), existingTween(), etc.
- Added the GameObjectFactory to Phaser.State
- Added new format parameter to Loader.addTextureAtlas defining the format. Currently supported: JSON Array and Starling/Sparrow XML.
V0.9.5
- Moved the BootScreen and PauseScreen out of Stage into their own classes (system/screens/BootScreen and PauseScreen).
- Updated the PauseScreen to show a subtle animation effect, making it easier to create your own interesting pause screens.
- Modified Game so it splits into 3 loops - bootLoop, pauseLoop and loop (the core loop).
- Updated the BootScreen with the new logo and new color cycle effect.
- Added Game.isRunning - set to true once the Game.boot process is over IF you gave some functions to the constructor or a state.
- Fixed small bug in Signal.removeAll where it could try to shorten the _bindings even if undefined.
- Added the new FXManager which is used for handling all special effects on Cameras (and soon other game objects).
- Removed Flash, Fade and Shake from the Camera class and moved to the new SpecialFX project.
- SpecialFX compiles to phaser-fx.js in the build folder, which is copied over to Tests. If you don't need the FX, don't include the .js file.
- The project is now generating TypeScript declaration files and all Tests were updated to use them in their references.
- Fixed a bug in Flash, Fade and Shake where the duration would fail on anything above 3 seconds.
- Fixed a bug in Camera Shake that made it go a bit haywire, now shakes correctly.
- Added new Scanlines Camera FX.
- Fixed offset values being ignored in GeomSprite.renderPoint (thanks bapuna).
- Added new Mirror Camera FX. Can mirror the camera image horizontally, vertically or both with an optional fill color overlay.
- Added Camera.disableClipping for when you don't care about things being drawn outside the edge (useful for some FX).
- Updated TilemapLayer so that collision data is now stored in _tempTileBlock to avoid constant array creation during game loop.
- TilemapLayer.getTileOverlaps() now returns all tiles the object overlapped with rather than just a boolean.
- Tilemap.collide now optionally takes callback and context parameters which are used if collision occurs.
- Added Tilemap.collisionCallback and Tilemap.collisionCallbackContext so you can set them once and not re-set them on every call to collide.
- Collision.separateTile now has 2 extra parameters: separateX and separateY. If true the object will be separated on overlap, otherwise just the overlap boolean result is returned.
- Added Tile.separateX and Tile.separateY (both true by default). Set to false if you don't want a tile to stop an object from moving, you just want it to return collision data to your callback.
- Added Tilemap.getTileByIndex(value) to access a specific type of tile, rather than by its map index.
- Added TilemapLayer.putTile(x,y,index) - allows you to insert new tile data into the map layer (create your own tile editor!).
- TilemapLayer.getTileBlock now returns a unique Array of map data, not just a reference to the temporary block array
- Added TilemapLayer.swapTile - scans the given region of the map for all instances of tileA and swaps them for tileB, and vice versa.
- Added TilemapLayer.replaceTile - scans the given region of the map and replaces all instances of tileA with tileB. tileB is left unaffected.
- Added TilemapLayer.fillTiles - fills the given region of the map with the tile specified.
- Added TilemapLayer.randomiseTiles - fills the given region of the map with a random tile from the list specified.
- Added fun new "map draw" test - rebound those carrots! :)
- Changed SoundManager class to respect volume on first play (thanks initials and hackmaniac)
V0.9.4
- Added Tilemap.getTile, getTileFromWorldXY, getTileFromInputXY
- Added Tilemap.setCollisionByIndex and setCollisionByRange
- Added GameObject.renderRotation boolean to control if the sprite will visually rotate or not (useful when angle needs to change but graphics don't)
- Added additional check to Camera.width/height so you cannot set them larger than the Stage size
- Added Collision.separateTile and Tilemap.collide
- Fixed Tilemap bounds check if map was smaller than game dimensions
- Fixed: Made World._cameras public, World.cameras and turned Game.camera into a getter for it (thanks Hackmaniac)
- Fixed: Circle.isEmpty properly checks diameter (thanks bapuna)
- Updated Gruntfile to export new version of phaser.js wrapped in a UMD block for require.js/commonJS (thanks Hackmaniac)
V0.9.3
- Added the new ScrollZone game object. Endlessly useful but especially for scrolling backdrops. Created 6 example tests.
- Added GameObject.hideFromCamera(cameraID) to stop an object rendering to specific cameras (also showToCamera and clearCameraList)
- Added GameObject.setBounds() to confine a game object to a specific area within the world (useful for stopping them going off the edges)
- Added GameObject.outOfBoundsAction, can be either OUT OF BOUNDS STOP which stops the object moving, or OUT OF BOUNDS KILL which kills it.
- Added GameObject.rotationOffset. Useful if your graphics need to rotate but weren't drawn facing zero degrees (to the right).
- Added shiftSinTable and shiftCosTable to the GameMath class to allow for quick iteration through the data tables.
- Added more robust frame checking into AnimationManager
- Re-built Tilemap handling from scratch to allow for proper layered maps (as exported from Tiled / Mappy)
- Tilemap no longer requires a buffer per Camera (in prep for WebGL support)
- Fixed issues with Group not adding reference to Game to newly created objects (thanks JesseFreeman)
- Fixed a potential race condition issue in Game.boot (thanks Hackmaniac)
- Fixed issue with showing frame zero of a texture atlas before the animation started playing (thanks JesseFreeman)
- Fixed a bug where Camera.visible = false would still render
- Removed the need for DynamicTextures to require a key property and updated test cases.
- You can now pass an array or a single value to Input.Keyboard.addKeyCapture().
V0.9.2
- Fixed issue with create not being called if there was an empty init method.
- Added ability to flip a sprite (Sprite.flipped = true) + a test case for it.
- Added ability to restart a sprite animation.
- Sprite animations don't restart if you call play on them when they are already running.
- Added Stage.disablePauseScreen. Set to true to stop your game pausing when the tab loses focus.
V0.9.1
- Added the new align property to GameObjects that controls placement when rendering.
- Added an align example to the Sprites test group (click the mouse to change alignment position)
- Added a new MicroPoint class. Same as Point but much smaller / less functions, updated GameObject to use it.
- Completely rebuilt the Rectangle class to use MicroPoints and store the values of the 9 points around the edges, to be used for new collision system.
- Game.Input now has 2 signals you can subscribe to for down/up events, see the Sprite align example for use.
- Updated the States examples to bring in-line with 0.9 release.
V0.9
- Large refactoring. Everything now lives inside the Phaser module, so all code and all tests have been updated to reflect this. Makes coding a tiny bit more verbose but stops the framework from globbing up the global namespace. Also should make code-insight work in WebStorm and similar editors.
- Added the new GeomSprite object. This is a sprite that uses a geometry class for display (Circle, Rectangle, Point, Line). It's extremely flexible!
- Added Geometry intersection results objects.
- Added new Collision class and moved some functions there. Contains all the Game Object and Geometry Intersection methods.
- Can now create a sprite animation based on frame names rather than indexes. Useful when you've an animation inside a texture atlas. Added test to show.
- Added addKeyCapture(), removeKeyCapture() and clearCaptures() to Input.Keyboard. Calls event.preventDefault() on any keycode set to capture, allowing you to avoid page scrolling when using the cursor keys in a game for example.
- Added new Motion class which contains lots of handy functions like 'moveTowardsObject', 'velocityFromAngle' and more.
- Tween Manager added. You can now create tweens via Game.createTween (or for more control game.tweens). All the usual suspects are here: Bounce, * Elastic, Quintic, etc and it's hooked into the core game clock, so if your game pauses and resumes your tweens adjust accordingly.
V0.8
- Added ability to set Sprite frame by name (sprite.frameName), useful when you've loaded a Texture Atlas with filename values set rather than using frame indexes.
- Updated texture atlas 4 demo to show this.
- Fixed a bug that would cause a run-time error if you tried to create a sprite using an invalid texture key.
- Added in DynamicTexture support and a test case for it.
V0.7
- Renamed FullScreen to StageScaleMode as it's much more fitting. Tested across Android and iOS with the various scale modes.
- Added in world x/y coordinates to the input class, and the ability to get world x/y input coordinates from any Camera.
- Added the RandomDataGenerator for seeded random number generation.
- Setting the game world size now resizes the default camera (optional bool flag)
V0.6
- Added in Touch support for mobile devices (and desktops that enable it) and populated x/y coords in Input with common values from touch and mouse.
- Added new Circle geometry class (used by Touch) and moved them into a Geom folder.
- Added in Device class for device inspection.
- Added FullScreen class to enable full-screen support on mobile devices (scrolls URL bar out of the way on iOS and Android)
V0.5
- Initial release