# 4.3.0
- Upgraded project to Godot 4.1 as the new minimum version.
- Added reporting of stage load errors.
- Blend player height changes and prevent the player from standing up under a low ceiling.
- **minor-breakage** Added support for swapping held items between hands.
- Added jog-in-place movement provider.
- Added support for grappling on GridMap instances
- **breakage** Added support for two-handed grabbing.
- Added support for snapping hands to grab-points.
- Added support for world-grab movement.
- Fixed editor errors when using hand physics bones.
- Added support for climbable grab-points.
- Added control of keyboard or gamepad inputs to Viewport2Din3D instances.

# 4.2.1
- Fixed snap-zones showing highlight when disabled.
- Fixed pickup leaving target highlighted after picking up.
- Fixed collision hands getting stuck too far from the real hands.

# 4.2.0
- Environments can now be set normally in scenes loaded through the staging system.
- Fixed issue with not being able to push rigid bodies when colliding with them.
- Fixed player movement on slopes.
- Fixed lag in finger-poke.
- Added initial collision hand support.
- Added support for custom materials for 2D in 3D viewport
- Updated pointer to support visibility properties and events
- Modified virtual keyboard to expose viewport controls and default to unshaded
- Cleaned up teleport and added more properties for customization
- Modified pickup highlighting to support pickables in snap-zones
- Added "UI Objects" layer 23 for viewports to support interaction by pointer and poking
- Fixed player scaling issues with crouching and poke
- **minor-breakage** Added support for passing user data between staged scenes with default handling for spawn-points
- Moved teleport logic to player and added teleport area node
- Change pointer event dispatching
- Added multi-touch on 2D in 3D viewports and virtual-keyboard
- Added option to disable laser-pointers when close to specific bodies/areas

# 4.1.0
- Enhanced grappling to support collision and target layers
- Added Godot Editor XR Tools menu for layers and openxr configuration
- Improved gliding to support roll-turning while flapping
- Added render_target_size_multiplier to StartXR (requires Godot 4.1+)

# 4.0.0
- Conversion to Godot 4
- Fixed footstep resource leak and added jump sounds and footstep signal
- Added grab-point switching to pickable objects
- Added return-to-snap-zone feature

# 3.4.0
- Fixed footstep resource leak and added jump sounds and footstep signal
- Added grab-point switching to pickable objects
- Added return-to-snap-zone feature

# 3.3.0
- Added reset-scene and scene-control functions to scene-base
- Fixed snap-zones stealing objects picked out of other near-by snap-zones
- Improved player body so it can be used to child objects to
- Updated scene/script default physics layers to match recommendations on website

# 3.2.0
- Minimum supported Godot version set to 3.5
- Added glide option for turning with arm-roll
- Added physics gravity effects on the player so they can walk around a planet
- Added wall-walking movement provider
- Cleaned the code to pass gdlint code checks
- Modified to work with both WebXR and OpenXR
- Added enable property to pickable objects
- Added support for snap-on-drop to snap-zones
- Added glide options for gaining altitude when flapping arms
- Added option to disable snap-turn repeating by setting the delay to 0
- Added capability for pointer function to auto-switch between controllers

# 3.1.0
- Improvements to our 2D in 3D viewport for filtering, unshaded, and transparency options
- Fixed editor preview system for our 2D in 3D viewport
- Use value based grip input with threshold
- Improved pointer demo supporting left hand with switching
- Enhanced pointer laser visibility options for colliding with targets
- Implement poke feature (finger interaction)
- Improvements to snap turning
- Moved staging solution into plugin so it can be re-used
- Allow setting different animations for hands
- Added enable/disable to snap-zones
- Added XR settings as Godot editor plugin and the ability to load and save the settings
- Added crouching movement provider
- Modified climbing to use the hand which most recently grabbed the climbing object
- Added enable/disable to pickup function
- Added ability to override hand material
- Added realistic hand models and textures
- Added ability to override hand animations
- Added additional search functions to find nodes
- Added support for viewport 2D in 3D to support 2D scenes instanced in the tree
- Added sprinting movement provider
- Added support for setting hand-poses when the hand enters an area
- Added support for setting grab-points on objects, and the grab-points supporting different hand-poses

# 3.0.0
- Included demo project with test scenes to evaluate features
- Standardized class naming convention for all scripts to "XRTools<PascalCaseName>"
- Standardized file naming convention to "snake_case_name.ext"
- Added many explicit type specifiers in preparation for GDScript 2.0
- Renamed some functions to avoid name-collisions with Godot 4.0

# 2.6.0
- Fixed enforcement of direct-movement maximum speed
- Added editor icons for all nodes
- Added collision bouncing to PlayerBody

# 2.5.0
- Added advanced player height control
- Modified climbing to collapse player to a sphere to allow mounting climbed objects
- Added crouch movement provider
- Added example fall damage detection
- Added moving platform support to player body
- Fixed player height-clamping to work in player-units
- Fixed glide T-pose detection to work in player-units
- Fixed jump detection to work in player-units
- Added valid-layer checking to teleport movement
- Modified hand meshes (blend and glb) to be scaled, so the hand scenes can be 1:1 scaled
- Modified hands to scale with world_scale (required for godot-openxr 1.3.0 and later)
- Added physics hands with PhysicsBody bones
- Fixed disabling of `_process` in XRToolsPickable script

# 2.4.1
- Fixed grab distance
- Fixed snap-zone instance drop and free issue
- Movement provides react properly when disabled
- Hiding grapple target when disabled

# 2.4.0
- Added configuration setting for head height in player body.
- Added Function_JumpDetect_movement to detect jumping via the players body and/or arms
- Improved responsiveness of snap-turning
- Moved flight logic from Function_Direct_movement to Function_Flight_movement
- Added option to disable player sliding on slopes
- Added support for remote grabbing
- Moved turning logic from Function_Direct_movement to Function_Turn_movement
- Fixed movement provider servicing so disabled/bypassed providers can report their finished events
- Added grappling movement provider
- Added snap-zones

# 2.3.0
- Added vignette
- Moved player physics into new PlayerBody asset (breaking change)
- Moved Function_Direct_movement settings for player physics into PlayerBody
- Added Function_Glide_movement to allow the player to glide
- Added Function_Jump_movement to allow the player to jump
- Added Function_Climb_movement to allow the player to climb
- Redid the setup of the hands to make it easier to extend to other gestures
- Improved pickup and throwing logic

# 2.2
- Changed default physics layers to make more sense (minor breaking change)
- Replaced Center On Node property with PickupCenter node you can place
- Made Object_pickable script work by itself and registers as class `XRToolsPickable`
- New Object_interactable convenience script that registers as class `XRToolsInteractable` that reacts to our pointer function
- Removed ducktype switch from pointer, pointer will use signals over ducktyping automatically (minor breaking change)

# 2.1
- added option to highlight object that can be picked up
- added option to snap object to given location (if reset transform is true)
- added callback when shader cache has finished
- using proper UI for layers
- added hand controllers that react on trigger and grip input
- fixed delta on move and slide (breaking change!)
- letting go of an object now adds angular velocity

# 2.0
- Renamed add on to **godot-xr-tools**
- Add enums to our export variables
- Add a switch on pickable objects to keep their current positioning when picked up
- Move direct movement player collision slightly backwards based on player radius
- Added switch between step turning and smooth turning
- Fixed sizing issue with teleport
- Added option to change pickup range

# 1.2
- Assign button to teleport function and no longer need to set origin
- Added pickable object support
- Fixed positioning of direct movement collision shape
- Added strafe and fly mode for directional
- Added ability to enable/disable the movement functions
- Added 2D in 3D viewport for UI
- Improved throwing by assigning linear velocity

# 1.1*
- previous versions were not tracked

* Note that version history before 1.2 was not kept and is thus incomplete
