You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
617 lines
28 KiB
617 lines
28 KiB
3 years ago
|
# Vive Input Utility for Unity - v1.8.3
|
||
|
Copyright (c) 2016-2018, HTC Corporation. All rights reserved.
|
||
|
|
||
|
|
||
|
## Changes for v1.8.3:
|
||
|
|
||
|
* Improvement
|
||
|
- Improve simulator module
|
||
|
- Add instruction UI
|
||
|
- Add group control (devices move alone with camera)
|
||
|
- See [Simulator](https://github.com/ViveSoftware/ViveInputUtility-Unity/wiki/Simulator) for more detail
|
||
|
![VIUSettings in Preference window](https://github.com/ViveSoftware/ViveInputUtility-Unity/blob/gh-pages/assets/img/simulator_01.png)
|
||
|
- Add ReticlePose.IReticleMaterialChanger interface, better way to indicate different type of pointing object
|
||
|
- Now you can setup default reticle material in ReticlePose property
|
||
|
![VIUSettings in Preference window](https://github.com/ViveSoftware/ViveInputUtility-Unity/blob/gh-pages/assets/img/retical_mat_changer_default_setup.png)
|
||
|
- Setup reticle material property in component that implement IReticleMaterialChanger
|
||
|
![VIUSettings in Preference window](https://github.com/ViveSoftware/ViveInputUtility-Unity/blob/gh-pages/assets/img/retical_mat_changer_walkable_setup.png)
|
||
|
- Add support for WaveVR SDK v2.0.37
|
||
|
|
||
|
* Bug fix
|
||
|
- Fix tracking device pose not applying scale from the origin transform
|
||
|
- Fix SteamVRModule reporting wrong input-focus state
|
||
|
- Fix ViveRigidPoseTracker broke after re-enabled
|
||
|
- Fix PoseModifier not work correctly ordered by priority value
|
||
|
|
||
|
|
||
|
## Changes for v1.8.2
|
||
|
|
||
|
* Bug fix
|
||
|
- Fix define symbols sometimes not handle correctly when switching build target
|
||
|
- Disable vr support if device list is empty
|
||
|
- Add code to avoid NullReferenceException in VRModule
|
||
|
- Add SetValueByIndex method to IndexedTable
|
||
|
- Fix StickyGrabbable not working in certain cases
|
||
|
|
||
|
|
||
|
## Changes for v1.8.1:
|
||
|
|
||
|
* New features
|
||
|
- VIVE Focus Support
|
||
|
- Required Unity 5.6 or later version
|
||
|
- Download and install WaveVR SDK Unity plugin from https://hub.vive.com/profile/material-download
|
||
|
- Enable VIVE Focus support under Edit > Preference > VIU Settings
|
||
|
|
||
|
* Bug fix
|
||
|
- Fix no tracking devices dectected when SteamVR plugin v1.2.3 is installed
|
||
|
- Fix compile error in Unity 2018.1
|
||
|
- Fix VIUSettings changes not saved into asset data file
|
||
|
|
||
|
|
||
|
## Changes for v1.8.0:
|
||
|
|
||
|
* New features
|
||
|
- Daydream Support
|
||
|
- Simulator
|
||
|
- New VIU Settings to easy setup project supporting device
|
||
|
- Open from Editor -> Preferences -> VIU Settings
|
||
|
![VIUSettings in Preference window](https://github.com/ViveSoftware/ViveInputUtility-Unity/blob/gh-pages/assets/img/viusettings_preview_01.png)
|
||
|
|
||
|
* Improvement
|
||
|
- Now compatible with SteamVR v1.1.1~v1.2.3
|
||
|
- Move some properties into VIU Settings
|
||
|
- Removed:
|
||
|
- ViveRoleBindingHelper.OverrideConfigPath
|
||
|
- ViveRoleBindingHelper.BindingConfig.apply_bindings_on_load
|
||
|
- ViveRoleBindingHelper.BindingConfig.toggle_interface_key_code
|
||
|
- ViveRoleBindingHelper.BindingConfig.toggle_interface_modifier
|
||
|
- ViveRoleBindingHelper.BindingConfig.interface_prefab
|
||
|
- Replaced with:
|
||
|
- VIUSettings.bindingConfigFilePath
|
||
|
- VIUSettings.autoLoadBindingConfigOnStart
|
||
|
- VIUSettings.bindingInterfaceSwitchKey
|
||
|
- VIUSettings.bindingInterfaceSwitchKeyModifier
|
||
|
- VIUSettings.bindingInterfaceObject
|
||
|
|
||
|
* Bug fix
|
||
|
- Fix compiler error caused by wrong define symbols.
|
||
|
|
||
|
* VIU Settings
|
||
|
- Setting changes is saved in project resource folder named VIUSettings.asset.
|
||
|
- VIU Settings will load default setting automatically if VIUSettings.asset resource not found.
|
||
|
|
||
|
* Daydream Support
|
||
|
- Requires Android platform support, Unity 5.6 or later and GoogleVR plugin.
|
||
|
- Requires checking the Daydream support toggle in Edit -> Preferences -> VIUSettings
|
||
|
- Beware of Daydream controller have less buttons.
|
||
|
- Remember to define and give the VR origin a headset height for Daydream device user.
|
||
|
|
||
|
* Simulator
|
||
|
- Simulator is a fake VRModule that spawn/remove fake devices, create fake tracking and fake input events.
|
||
|
- Requires checking the Simulator support toggle in Edit -> Preferences -> VIUSettings
|
||
|
- Simulator only enabled when no VR device detected.
|
||
|
- There are 2 ways to manipulate the fake devices
|
||
|
- Handle events by script manually
|
||
|
- HTC.UnityPlugin.VRModuleManagement.VRModule.Simulator.onUpdateDeviceState
|
||
|
- Invoked each frame when VRModule performs a device state update
|
||
|
- Write device state into currState argument to manipulate devices
|
||
|
- Read-only argument prefState preserved device state in last frame
|
||
|
- Use Keyboard-Mouse control (can be disabled in VIUSettings)
|
||
|
- Add/Remove/Select devices
|
||
|
- [0~9] Add and select device N if device N is not selected, otherwise, deselect it
|
||
|
- [` + 0~5] Add and select device 10+N if device 10+N is not selected, otherwise, deselect it
|
||
|
- [Shift + 0~9] Remove and deselect device N
|
||
|
- [Shift + ` + 0~5] Remove and deselect device 10+N
|
||
|
- Control selected device
|
||
|
- [W] Move selected device forward
|
||
|
- [S] Move selected device backward
|
||
|
- [D] Move selected device right
|
||
|
- [A] Move selected device left
|
||
|
- [E] Move selected device up
|
||
|
- [Q] Move selected device down
|
||
|
- [C] Roll+ selected device
|
||
|
- [Z] Roll- selected device
|
||
|
- [X ] Reset selected device roll
|
||
|
- [ArrowUp] Pitch+ selected device
|
||
|
- [ArrowDown] Pitch- selected device
|
||
|
- [ArrowRight] Yaw+ selected device
|
||
|
- [ArrowLeft] Yaw- selected device
|
||
|
- [MouseMove] Pitch/Yaw selected device
|
||
|
- [MouseLeft] Press Trigger on selected device
|
||
|
- [MouseRight] Press Trackpad on selected device
|
||
|
- [MouseMiddle] Press Grip on selected device
|
||
|
- [Hold Shift + MouseMove] Touch Trackpad on selected device
|
||
|
- Control HMD
|
||
|
- [T] Move hmd forward
|
||
|
- [G] Move hmd backward
|
||
|
- [H] Move hmd right
|
||
|
- [F] Move hmd left
|
||
|
- [Y] Move hmd up
|
||
|
- [R] Move hmd down
|
||
|
- [N] Roll+ hmd
|
||
|
- [V] Roll- hmd
|
||
|
- [B] Reset hmd roll
|
||
|
- [I] Pitch+ hmd
|
||
|
- [K] Pitch- hmd
|
||
|
- [L] Yaw+ hmd
|
||
|
- [J] Yaw- hmd
|
||
|
- Notice that when the simulator is enabled, it is started with 3 fake device
|
||
|
- [0] HMD (selected)
|
||
|
- [1] Right Controller
|
||
|
- [2] Left Controller
|
||
|
|
||
|
|
||
|
## Changes for v1.7.3:
|
||
|
|
||
|
* Bug fix
|
||
|
- [VRModule] Fix compile error in OculusVRModule.cs #14
|
||
|
- [Pointer3D] Fix **IPointerExit** not handled correctly when disabling a raycaster #16
|
||
|
- [Pointer3D] Fix **IPointerPressExit**, **IPointerUp** doesn't execute in some cases
|
||
|
- Add **Pointer3DEventData.pressProcessed** flag to ensure Down/Up processed correctly
|
||
|
|
||
|
* Improvement
|
||
|
- Add new struct type **HTC.UnityPlugin.Utility.RigidPose** to replace **HTC.UnityPlugin.PoseTracker.Pose**
|
||
|
- Utility.RigidPose inherit all members in PoseTracker.Pose
|
||
|
- Add forward, up, right property getter
|
||
|
- Obsolete struct **HTC.UnityPlugin.PoseTracker.Pose** (will be removed in future version) to avoid type ambiguous with UnityEngine.Pose (new type in Unity 2017.2)
|
||
|
- If you somehow want to using HTC.UnityPlugin.PoseTracker and UnityEngine.Pose in your script at the same time, please use full type name or add type alias to avoid ambiguous compile error
|
||
|
``` csharp
|
||
|
using HTC.UnityPlugin.PoseTracker;
|
||
|
using UnityEngine;
|
||
|
using Pose = UnityEngine.Pose;
|
||
|
|
||
|
public class MyPoseTracker : BasePoseTracker
|
||
|
{
|
||
|
public Pose m_pose;
|
||
|
...
|
||
|
}
|
||
|
```
|
||
|
- Change some recommended setting value
|
||
|
- Now binding interface switch is recommended as enable only if Steam VR plugin is imported
|
||
|
- Now external camera interface switch is recommended as enable only if Steam VR plugin is imported
|
||
|
- Now VIU system game object will be auto generated only if nessary
|
||
|
|
||
|
|
||
|
## Changes for v1.7.2:
|
||
|
|
||
|
* New features
|
||
|
- Add recommended VR project settings notification window
|
||
|
|
||
|
* Bug fix
|
||
|
- Fix compile error in Unity 5.5/5.6
|
||
|
- [VRModule] Fix UnityEngineVRModule not removing disappeared device correctly
|
||
|
- In Unity 2017.2, InputTracking.GetNodeStates sometimes returns ghost nodes at the beginning of play mode.
|
||
|
- [Teleportable] Remove a potential null reference
|
||
|
- This happens when SteamVR plugin is imported and no SteamVR_Camera exist.
|
||
|
|
||
|
* Improvement
|
||
|
- [Pointer3D] Now Pointer3DInputModule shows status in EventSystem's inspector preview window
|
||
|
- [Pointer3D] Let Pointer3DInputModule behave more consistent with StandaloneInputModule
|
||
|
- Now IPointerEnterHandler / IPointerExitHandler only triggered once for each pointer, pressing buttons won't trigger Enter/Exit anymore.
|
||
|
- [Pointer3D] Add IPointer3DPressEnterHandler / IPointer3DPressExitHandler
|
||
|
- Their behaviours are like IPointerEnterHandler/IPointerExitHandler, but press enter happend when the button is pressed and moved in, and press exit on button released or pointer moved out.
|
||
|
- [SteamVRCameraHook] Fix not expending head-eye-ear correctly
|
||
|
- [VRModule] Fix update timing issue
|
||
|
- This fix VivePoseTracker tracking is delayed in editor playing mode.
|
||
|
|
||
|
|
||
|
## Changes for v1.7.1:
|
||
|
|
||
|
* New features
|
||
|
- [ExternalCameraHook] Add externalcamera.cfg config interface
|
||
|
- The interface is built into project when VIU_EXTERNAL_CAMERA_SWITCH symbol is defined.
|
||
|
- It is automatically activated with the external camera quad view.
|
||
|
|
||
|
![External Camera Config Interface](https://github.com/ViveSoftware/ViveInputUtility-Unity/blob/gh-pages/assets/img/external_camera_config_interface.png)
|
||
|
|
||
|
* Changes
|
||
|
- Now you can fully disable the binding interface switch by removing the VIU_BINDING_INTERFACE_SWITCH symbol
|
||
|
- That means nologer
|
||
|
|
||
|
* Bug fix
|
||
|
- [ViveRole] Fix HandRole.ExternalCamera not mapping to tracker in some cases
|
||
|
- [ViveRole] Fix ViveRole.IMap.UnbindAll() to work correctly
|
||
|
- [BindingInterface] Fix some info updating and animation issue
|
||
|
- [VivePose] Now GetPose returns Pose.identity instead of default(Pose) for invalid device
|
||
|
|
||
|
|
||
|
## Changes for v1.7.0:
|
||
|
|
||
|
* New features
|
||
|
- Add notification when new version released on [Github](https://github.com/ViveSoftware/ViveInputUtility-Unity/releases).
|
||
|
- Add **VRModule** class to bridge various VR SDK. It currently supports SteamVR plugin, Oculus VR plugin and Unity native VR/XR interface.
|
||
|
- **void VRModule.Initialize()**: Create and initilize VRModule manager instance.
|
||
|
- **VRModuleActiveEnum VRModule.activeModule**: Returns the activated module.
|
||
|
- **IVRModuleDeviceState VRModule.GetCurrentDeviceState(uint deviceIndex)**: Returns the virtual VR device status.
|
||
|
- **event NewPosesListener VRModule.onNewPoses**: Invoked after virtual VR device status is updated.
|
||
|
- **event DeviceConnectedListener VRModule.onDeviceConnected**: Invoked after virtual VR device is connected/disconnected.
|
||
|
- **event ActiveModuleChangedListener VRModule.onActiveModuleChanged**: Invoked when a VR module is activated.
|
||
|
- New binding interface using overlay UI. By default, the binding interface can be enabled by pressing RightShift + B in play mode.
|
||
|
- ![Binding UI](https://github.com/ViveSoftware/ViveInputUtility-Unity/blob/gh-pages/assets/img/binding_ui_preview_01.png)
|
||
|
- ![Binding UI](https://github.com/ViveSoftware/ViveInputUtility-Unity/blob/gh-pages/assets/img/binding_ui_preview_02.png)
|
||
|
- ![Binding UI](https://github.com/ViveSoftware/ViveInputUtility-Unity/blob/gh-pages/assets/img/binding_ui_preview_03.png)
|
||
|
- Add define symbols
|
||
|
- **VIU_PLUGIN**: Defined when Vive Input Utility plugin is imported in the project.
|
||
|
- **VIU_STEAMVR**: Defined when SteamVR plugin is imported in the project.
|
||
|
- **VIU_OCULUSVR**: Defined when OculusVR plugin (OVRPlugin) is imported in the project.
|
||
|
- **VIU_BINDING_INTERFACE_SWITCH**: Define it to let the project be able to switch binding interface by pressing RightShift + B in play mode.
|
||
|
- **VIU_EXTERNAL_CAMERA_SWITCH**: Define it to let the project be able to switch external camera quad view by pressing RightShift + M in play mode.
|
||
|
- Add new role HandRole.ExternalCamera (Alias for HandRole.Controller3).
|
||
|
- By default, it is mapping to the 3rd controller, if 3rd controller not available, then mapping to the first valid generic tracker.
|
||
|
- ExternalCameraHook uses mapping as the default tracking target.
|
||
|
|
||
|
* New componts
|
||
|
- [ViveInputVirtualButton] Use this helper component to combine multiple Vive inputs into one virtual button.
|
||
|
|
||
|
* Improvement
|
||
|
- [ViveInput] Add more controller buttons, use ViveInput.GetPress(role, buttonEnum) to get device button stat
|
||
|
- **System** (Only visible when sendSystemButtonToAllApps option is on)
|
||
|
- **Menu**
|
||
|
- **MenuTouch**
|
||
|
- **Trigger**
|
||
|
- **TriggerTouch**
|
||
|
- **Pad**
|
||
|
- **PadTouch**
|
||
|
- **Grip**
|
||
|
- **GripTouch**
|
||
|
- **CapSenseGrip**
|
||
|
- **CapSenseGripTouch**
|
||
|
- **AKey**
|
||
|
- **AKeyTouch**
|
||
|
- **OuterFaceButton** (Alias for Menu)
|
||
|
- **OuterFaceButtonTouch** (Alias for MenuTouch)
|
||
|
- **InnerFaceButton** (Alias for Grip)
|
||
|
- **InnerFaceButtonTouch** (Alias for GripTouch)
|
||
|
- [ViveInput] Add controller axis enum, use ViveInput.GetAxis(role, axisEnum) to get device axis value
|
||
|
- **PadX**
|
||
|
- **PadY**
|
||
|
- **Trigger**
|
||
|
- **CapSenseGrip**
|
||
|
- **IndexCurl**
|
||
|
- **MiddleCurl**
|
||
|
- **RingCurl**
|
||
|
- **PinkyCurl**
|
||
|
- [ViveRole] Role mapping/binding mechanism is improved and become more flexible.
|
||
|
- Now different devices can bind to same role at the same time.
|
||
|
- If a unconnected device is bound to a role, that role can still map to other connected device.
|
||
|
- [ViveRole] Obsolete functions that retrieve device status and property, use static API in VRModule instead.
|
||
|
- **ViveRole.TryGetDeviceIndexBySerialNumber**: Use VRModule.TryGetDeviceIndex instead.
|
||
|
- **ViveRole.GetModelNumber**: Use VRModule.GetCurrentDeviceState(deviceIndex).modelNumber instead
|
||
|
- **ViveRole.GetSerialNumber**: Use VRModule.GetCurrentDeviceState(deviceIndex).serialNumber instead
|
||
|
- **ViveRole.GetDeviceClass**: Use VRModule.GetCurrentDeviceState(deviceIndex).deviceClass instead
|
||
|
- [ViveRoleBindingsHelper] Now will automatically load bindings from "vive_role_bindings.cfg", no need to be in the scene to work.
|
||
|
- [RenderModelHook] Add override model and shader option.
|
||
|
- [ExternalCameraHook] Now ExternalCameraHook will track the HandRole.ExternalCamera by default.
|
||
|
- [ExternalCameraHook] Now will be added into scene automatically if "externalcamera.cfg" exist when start playing, no need to add to scene manually.
|
||
|
- [ExternalCameraHook] You can now enable static External Camera quad view (without tracking to a device) if
|
||
|
1. VIU_EXTERNAL_CAMERA_SWITCH symbol is defined.
|
||
|
2. externalcamera.cfg exist.
|
||
|
3. RightShift + M pressed in play mode.
|
||
|
- [BasicGrabbable, StickyGrabbable, Draggable] Add unblockable grab/drag option.
|
||
|
|
||
|
* Bug fix
|
||
|
- [ViveRoleProperty] Fix not handling serialized data right in inspector.
|
||
|
- [PoseEaser] Now use unscaled time instead to avoid from being effected by time scale.
|
||
|
|
||
|
|
||
|
## Changes for v1.6.4:
|
||
|
|
||
|
* Resloves tracking pose not updating in Unity 5.6
|
||
|
|
||
|
* Add SnapOnEnable option to ViveRigidPoseTracker component
|
||
|
|
||
|
* Add mouse button mapping options to ViveRaycaster component
|
||
|
|
||
|
* Fix crashes when clicking dropdown UI in RoleBindingExample scene
|
||
|
|
||
|
* Fix auto-bake-lightmap errors in example scenes
|
||
|
|
||
|
* Correct rigidbody null check in Draggable and Grabbable scripts
|
||
|
|
||
|
|
||
|
## Changes for v1.6.3:
|
||
|
|
||
|
* Fix ViveRoleProperty returns wrong type & value [issue#9](https://github.com/ViveSoftware/ViveInputUtility-Unity/issues/9)
|
||
|
|
||
|
* Now Teleportable component will find target & pivot automatically [issue#8](https://github.com/ViveSoftware/ViveInputUtility-Unity/issues/8)
|
||
|
|
||
|
* Remove warning in LineRenderer
|
||
|
|
||
|
|
||
|
## Changes for v1.6.2:
|
||
|
|
||
|
* Fix remapping errors from HandRoleHandler [issue#1](https://github.com/ViveSoftware/ViveInputUtility-Unity/issues/1)
|
||
|
|
||
|
* Fix ViveRoleProperty.ToRole always returns Invalid [issue#6](https://github.com/ViveSoftware/ViveInputUtility-Unity/issues/6)
|
||
|
|
||
|
* Fix ViveRaycaster not working when app loses focus [issue#7](https://github.com/ViveSoftware/ViveInputUtility-Unity/issues/7)
|
||
|
|
||
|
|
||
|
## Changes for v1.6.0:
|
||
|
|
||
|
* New ViveRole System
|
||
|
- ViveRole is a mapping system that relate logic roles to OpenVR device indices.
|
||
|
- Each role has their own auto-mapping logic, and binding API allow user to customize the relation.
|
||
|
- Both mapping (role, device index) binding (role, device serial number) are one-on-one relation
|
||
|
- When a device serial number is binding to a role, it means that role is always mapping to the specific device
|
||
|
- If the bound device is disconnected, the bound role will not mapping to any device index (invalid).
|
||
|
- Currently there are 4 built-in roles:
|
||
|
- DeviceRole: role that mapping to all 16 devices, ordered exactly same as device index.
|
||
|
- HandRole: role related to standard Vive controllers, with basic RightHand/LeftHand recognition.
|
||
|
- TrackerRole: role related to Vive trackers, first conntected tracker will be mapping to Tracker1.
|
||
|
- BodyRole: role related to devices that tracking human limbs.
|
||
|
- Creating custom role in an instant by adding ViveRoleEnumAttribute to your enum type
|
||
|
- Customizing auto-mapping logic by implementing ViveRoleHandler\<EnumType\> and call ViveRole.AssignMapHandler()
|
||
|
|
||
|
* New query APIs that accept any ViveRoles, ex.
|
||
|
- Use ViveRole.GetDeviceIndexEx(TrackerRole.Tracker1) to get tracker's device index.
|
||
|
- Use VivePose.GetPoseEx(TrackerRole.Tracker1) to get tracker's tracking data
|
||
|
- Use ViveInput.GetPressEx(TrackerRole.Tracker1, ControllerButton.Trigger) to get tracker's trigger event.
|
||
|
- Use ViveInput.AddListenerEx(TrackerRole.Tracker1, ControllerButton.Trigger, ButtonEventType.Press) to listen tracker's trigger event.
|
||
|
|
||
|
* New sample scene "RoleBindingExample"
|
||
|
- This sample scene demonstrate how to bind device a role and save/load those bindings
|
||
|
|
||
|
* New ViveRoleBindingsHelper helper component
|
||
|
- Adding this component to scene to auto-load bindings.
|
||
|
- Call function SaveRoleBindings(filePath) to save bindings manually.
|
||
|
- Call function LoadRoleBindings(filePath) to load bindings manually.
|
||
|
|
||
|
* New RenderModelHook helper component
|
||
|
- This script creates and handles SteamVR_RenderModel, so you can show render model specified by ViveRole insdead of device index.
|
||
|
|
||
|
* New ExternalCameraHook helper component
|
||
|
- This script creates and handles SteamVR_ExternalCamera, and let camera tracking device specified by ViveRole insdead of device index.
|
||
|
- Setup step-by-step
|
||
|
1. Add a file called externalcamera.cfg in the root of your project. (the config file sample can be found [here](https://steamcommunity.com/app/358720/discussions/0/405694031549662100/))
|
||
|
2. Add ExternalCameraHook component into your scene. (don't remove the auto-generated SteamVR_Render component)
|
||
|
3. Select ExternalCameraHook gameobject and set the device role in inspector. (or set in script, ex. ExternalCameraHook.viveRole.SetEx(TrackerRole.Tracker1))
|
||
|
- If you are using 3rd Vive standard controller as external camera, set to HandRole.Controller3 (recommended)
|
||
|
- If you are using ViveTracker as external camera, set to TrackerRole.Tracker1 (recommended)
|
||
|
4. (Optional) Bind the external camera tracking device to the role
|
||
|
1. Open "RoleBindingExample" scene
|
||
|
2. Scan the specific device (for external camera)
|
||
|
3. Bind to the specific role (ex. HandRole.Controller3 or TrackerRole.Tracker1)
|
||
|
4. Save bindings
|
||
|
5. Back to your project scene
|
||
|
6. Add ViveRoleBindingsHelper component into your scene. (to load bindings automatically)
|
||
|
7. Now external camera should always tracking at the device you wanted.
|
||
|
|
||
|
|
||
|
## Changes for v1.5.3:
|
||
|
|
||
|
* Make compatible with SteamVR plugin 1.2.1
|
||
|
* Fix a bug in ColliderEventCaster that cause crash when disabling event caster and handling events at the same time.
|
||
|
* Change default teleportButton in Teleportable to TeleportButton.Pad instead of TeleportButton.Trigger
|
||
|
* Containers optimize
|
||
|
- Re-write IndexedTable, should be more efficient
|
||
|
- Add read-only interface
|
||
|
|
||
|
|
||
|
## Changes for v1.5.2:
|
||
|
|
||
|
* Make compatible with SteamVR plugin 1.2.0
|
||
|
|
||
|
|
||
|
## Changes for v1.5.1:
|
||
|
|
||
|
* Update guide document
|
||
|
- Reveal used namespace in some example scripts.
|
||
|
- Add ready-to-used component list.
|
||
|
|
||
|
* New controllers prefab that handles both hand EventRaycaster, ColliderEventCaster, guidelines and models
|
||
|
- Hide controllers' models when grabbing or dragging
|
||
|
- Enable EventRaycaster on pad touched, otherwise enable ColliderEventCaster
|
||
|
|
||
|
* Pointer3D
|
||
|
- Expose Pointer3DRaycaster at Pointer3DEventData.raycaster, to get Raycaster from eventData easily.
|
||
|
- Move dragThreshold and clickInterval settings from Pointer3DInputModule to Pointer3DRaycaster.
|
||
|
- Re-design RaySegmentGenerator. Now RaycastMode setting is replaced by applying ProjectionGenerator & ProjectileGenerator component with Pointer3DRaycaster.
|
||
|
Add or enable only one generator at a time, or which generator used by the raycaster is unexpected.
|
||
|
Also customize your own generators by implementing BaseRaySegmentGenerator.
|
||
|
|
||
|
* ColliderEvent
|
||
|
- Now OnColliderEventClick won't invoke if caster has leaved the pressed object.
|
||
|
- Fix a bug in ColliderEventCaster that doesn't handle hovered colliders correctly.
|
||
|
- Fix a bug that ColliderEventCaster doesn't handle event correctly when disable.
|
||
|
- Add ColliderEventTrigger component, work just like built-in EventTrigger
|
||
|
|
||
|
|
||
|
* Add Pointer3DEventData extensions
|
||
|
```csharp
|
||
|
Pointer3DRaycaster PointerEventData.GetRaycaster3D()
|
||
|
bool PointerEventData.TryGetRaycaster3D(out Pointer3DRaycaster raycaster)
|
||
|
TRaycaster3D PointerEventData.GetRaycaster3D<TRaycaster3D>()
|
||
|
bool PointerEventData.TryGetRaycaster3D<TRaycaster3D>(out TRaycaster3D raycaster)
|
||
|
```
|
||
|
|
||
|
* Add ColliderEventData extensions
|
||
|
```csharp
|
||
|
TEventCaster ColliderEventData.GetEventCaster<TEventCaster>()
|
||
|
bool ColliderEventData.TryGetEventCaster<TEventCaster>(out TEventCaster eventCaster)
|
||
|
```
|
||
|
|
||
|
* Add VivePointerEventData extensions
|
||
|
```csharp
|
||
|
bool PointerEventData.IsViveButton(HandRole hand)
|
||
|
bool PointerEventData.IsViveButton(ControllerButton button)
|
||
|
bool PointerEventData.IsViveButton(HandRole hand, ControllerButton button)
|
||
|
bool PointerEventData.TryGetViveButtonEventData(out VivePointerEventData viveEventData)
|
||
|
```
|
||
|
|
||
|
* Add ViveColliderEventData extensions
|
||
|
```csharp
|
||
|
bool ColliderEventData.IsViveButton(HandRole hand)
|
||
|
bool ColliderEventData.IsViveButton(ControllerButton button)
|
||
|
bool ColliderEventData.IsViveButton(HandRole hand, ControllerButton button)
|
||
|
bool ColliderEventData.TryGetViveButtonEventData(out ViveColliderButtonEventData viveEventData)
|
||
|
bool ColliderAxisEventData.IsViveTriggerValue()
|
||
|
bool ColliderAxisEventData.IsViveTriggerValue(HandRole hand)
|
||
|
bool ColliderAxisEventData.TryGetViveTriggerValueEventData(out ViveColliderTriggerValueEventData viveEventData)
|
||
|
bool ColliderAxisEventData.IsVivePadAxis()
|
||
|
bool ColliderAxisEventData.IsVivePadAxis(HandRole hand)
|
||
|
bool ColliderAxisEventData.TryGetVivePadAxisEventData(out ViveColliderPadAxisEventData viveEventData)
|
||
|
```
|
||
|
|
||
|
* Improve BasicGrabbable component, and Draggable(in 3D Drag example) as well
|
||
|
- Now grabbed object can collide properly into other colliders.
|
||
|
- Now handles multiple grabbers.
|
||
|
- Add speed factor parameter to adjast grabbed object following speed.
|
||
|
- Add afterGrabbed & beforeRelease event handler.
|
||
|
|
||
|
* Add dragging state material in MaterialChanger.
|
||
|
|
||
|
* Fix a bug in Teleportable so that GuideLineDrawer won't draw in wrong position.
|
||
|
|
||
|
* New containers in Utiliy
|
||
|
```csharp
|
||
|
IndexedSet<TKey> // container that combinds set and list, order is not preserved, removing complexity is O(1)
|
||
|
OrderedIndexedSet<TKey> // container that combinds set and list, order is preserved, removing complexity is O(N)
|
||
|
IndexedTable<TKey, TValue> // container that combinds dictionary and list, order is not preserved, removing complexity is O(1)
|
||
|
OrderedIndexedTable<TKey, TValue> // container that combinds dictionary and list, order is preserved, removing complexity is O(N)
|
||
|
```
|
||
|
|
||
|
|
||
|
## Changes for v1.5.0:
|
||
|
|
||
|
* Add new raycast mode for Pointer3DRaycaster
|
||
|
- Default : one simple raycast
|
||
|
- Projection : raycast in a constant distance then raycast toward gravity
|
||
|
- Projectile : raycast multiple times alone the projectile curve using initial velocity
|
||
|
|
||
|
* Add ViveInput.GetCurrentRawControllerState and ViveInput.GetPreviousRawControllerState.
|
||
|
|
||
|
* BaseRaycastMethod now registered into Pointer3DRaycaster at Start instead of Awake.
|
||
|
|
||
|
* Remove RequireComponent(typeof(BaseMultiMethodRaycaster)) attribute from BaseRaycastMethod.
|
||
|
|
||
|
* Pointer3DRaycaster now registered into Pointer3DInputModule at Start instead of Awake.
|
||
|
|
||
|
* EventCamera for Pointer3DRaycaster now place at root, instead of child of Pointer3DRaycaster.
|
||
|
|
||
|
* New ColliderEventSyatem. Hover thins using collider (instead of raycast), send button events to them, handle events by EventSystem-like handlers.
|
||
|
- IColliderEventHoverEnterHandler
|
||
|
- IColliderEventHoverExitHandler
|
||
|
- IColliderEventPressDownHandler
|
||
|
- IColliderEventPressUpHandler
|
||
|
- IColliderEventPressEnterHandler
|
||
|
- IColliderEventPressExitHandler
|
||
|
- IColliderEventClickHandler
|
||
|
- IColliderEventDragStartHandler
|
||
|
- IColliderEventDragUpdateHandler
|
||
|
- IColliderEventDragEndHandler
|
||
|
- IColliderEventDropHandler
|
||
|
- IColliderEventAxisChangeHandler
|
||
|
|
||
|
* New example scene to demonstrate how ColliderEvent works.
|
||
|
- Assets\HTC.UnityPlugin\ViveInputUtility\Examples\5.ColliderEvent\ColliderEvent.unity
|
||
|
|
||
|
* Update tutorial & guide document.
|
||
|
|
||
|
|
||
|
## Changes for v1.4.7:
|
||
|
|
||
|
* Now HandRole defines more then 2 controllers.
|
||
|
|
||
|
* Add some comment and description to public API.
|
||
|
|
||
|
|
||
|
## Changes for v1.4.6:
|
||
|
|
||
|
* Fix a bug in the examples, now reticle posed correctly when scaling VROrigin.
|
||
|
|
||
|
|
||
|
## Changes for v1.4.5:
|
||
|
|
||
|
* Fix a rare issue in Pointer3DInputModule when processing event raycast.
|
||
|
|
||
|
|
||
|
## Changes for v1.4.4:
|
||
|
|
||
|
* Remove example 5 & 6 from package for release(still available in full package), since they are not good standard practices in VR for avoiding motion sickness by moving the player.
|
||
|
|
||
|
* Reset pointer's tranform(to align default laser pointer direction) in examples.
|
||
|
|
||
|
* Adjust default threshold to proper value in PoseStablizer & Pointer3DInputModule.
|
||
|
|
||
|
* Fix a bug in Pointer3DRaycaster that causes other input module to drive Pointer3DRaycaster(witch should be only driven by Poinster3DInputModule).
|
||
|
|
||
|
* Now Pointer3DRaycaster can optionally show event raycast line in editor for debugging.
|
||
|
|
||
|
* Add step by step tutorial document and example scene.
|
||
|
|
||
|
* Replace about document with developer guide.
|
||
|
|
||
|
|
||
|
## Changes for v1.4.3:
|
||
|
|
||
|
* Update usage document(rewrite sample code).
|
||
|
|
||
|
* Add copyright terms.
|
||
|
|
||
|
* Define new controller button : FullTrigger(consider pressed only when trigger value is 1.0).
|
||
|
|
||
|
* Fix ViveInput.GetPadPressDelta and ViveInput.GetPadTouchDelta to work properly.
|
||
|
|
||
|
* Add scroll delta scale property for ViveRaycaster(to adjust scrolling sensitivity).
|
||
|
|
||
|
* Add PoseEaser effect settings and PoseEaserEditor to show properties.
|
||
|
|
||
|
* Add ViveInput.TriggerHapticPulse for triggering controller vibration.
|
||
|
|
||
|
|
||
|
## Changes for v1.4.2:
|
||
|
|
||
|
* Update usage document.
|
||
|
|
||
|
* Reorder parameters in Pose.SetPose.
|
||
|
|
||
|
* Now click interval can be configured by setting ViveInput.clickInterval.
|
||
|
|
||
|
|
||
|
## Changes for v1.4.1:
|
||
|
|
||
|
* Fix wrong initial status for ViveRole and ViveInput.
|
||
|
|
||
|
* Example: showLocalAvatar (property for LANGamePlayer) won't hide shadow (hide mesh only) if set to false.
|
||
|
|
||
|
|
||
|
## Changes for v1.4.0:
|
||
|
|
||
|
* Separate PoseTracker module from VivePose.
|
||
|
|
||
|
* New tracking effect PoseFreezer.
|
||
|
|
||
|
* Reorganize folders.
|
||
|
|
||
|
|
||
|
## Changes for v1.3.0:
|
||
|
|
||
|
* VivePose is now pure static class (Since Unity 5.3.5 fixed issue with double rendering of canvas on Vive VR, PoseUpdateMode is no longer needed).
|
||
|
|
||
|
* New components CanvasRaycastMethod and CanvasRaycastTarget.
|
||
|
- CanvasRaycastMethod works like GraphicRaycastMethod, but use CanvasRaycastTarget component to target canvases, instead of asigning canvas property once at a time.
|
||
|
|
||
|
|
||
|
## Changes for v1.2.0:
|
||
|
|
||
|
* Fix misspelling from ConvertRoleExtention to ConvertRoleExtension
|
||
|
|
||
|
* New containter class IndexedSet\<T\>
|
||
|
|
||
|
* New class ObjectPool\<T\> and relative class ListPool\<T\>, DictionaryPool\<T\>, IndexedSetPool\<T\>, to reduce allocating new containers.
|
||
|
|
||
|
* Change some data structure from LinkList to InedexedSet (VivePose, Pointer3DInputModule, BaseMultiMethodRaycaster, BaseVivePoseTracker).
|
||
|
|
||
|
* Rewrite GraphicRaycastMethod to align GraphicRaycaster's behaviour.
|
||
|
|
||
|
|
||
|
## Changes for v1.1.0:
|
||
|
|
||
|
* New API VivePose.SetPose().
|
||
|
|
||
|
* New API VivePose.GetVelocity().
|
||
|
|
||
|
* New API VivePose.GetAngularVelocity().
|
||
|
|
||
|
* Fix some null reference in VivePose.
|