@miraleung miraleung released this Jul 24, 2017 · 15 commits to master since this release

Assets 3

Breaking Changes

  • Refactored Controller classes:
    • Deprecated GvrPointerManager. Its functionality has been moved to
    • GvrArmModel is no longer a singleton and has been moved to the
      GvrControllerPointer prefab.
    • Renamed GvrController to GvrControllerInput. GvrController still
      exists for backwards compatibility.
    • GvrArmModelOffsets has been replaced by GvrFollowControllerPose.
      GvrArmModelOffsets still exists for backwards compatibility.
    • GvrControllerVisualManager has been replaced by
      GvrTrackedController. GvrControllerVisualManager still exists for
      backwards compatibility.
    • GvrLaserPointer has been de-coupled from the laser/reticle rendering
      code (which is now handled by GvrLaserVisual).
    • Tooltips have been removed from the GvrControllerPointer prefab.
      There are now prefabs for just tooltips.
    • Prefabs can be dynamically added to the controller visual by listing
      them in the attachmentPrefabs property on the GvrControllerVisual
    • RaycastMode is now set per-pointer instead of per-raycaster.


  • You can now simulate the controller in the Unity editor using the mouse.
    • Hold the shift key with the game view in focus to use the mouse.
      The controls are as follows:
      • Shift + move mouse: Change orientation.
      • Shift + left-click: ClickButton
      • Shift + right-click: AppButton
      • Shift + Middle mouse button: HomeButton/Recenter
      • Shift + Ctrl: IsTouching
      • Shift + Ctrl + Move Mouse: Change TouchPos
  • Added the ability to anchor the arm model to the local position of the
    head. This will be used for the standalone headsets so the arm model doesn't
    break with positional tracking.
  • Introduced a new experimental Hybrid raycast mode that combines
    Camera and Direct modes to make the Daydream controller work better
    in more complex scenes that include objects at many different depths and
    locomotion. The default raycast mode is still Camera.


  • We've updated the controller visualization. The new controller visual is
    both higher fidelity and more performant.
    • Removed the touch point and battery indicator.
    • Replaced controller assets and textures.
    • Added new simple tooltips.
  • The battery status UI is only displayed when the required library is available.
    Unity includes the required library as of Unity 5.6.2p1.
  • The GvrDaydreamApi.LaunchVrHome() API no longer requires that you first
    call GvrDaydreamApi.Create(). However, the Create() method still exists
    to give developers precise control over when the (expensive) instance creation
    happens. The Dispose() method remains as well, to allow developers to clean
    up unneeded memory. However, Dispose() is now called automatically upon
    OnApplicationPause(true). See class comments in GvrDaydreamApi for
    additional details.
  • Change DemoInputManger's default message to be less confusing when
    viewing its message canvas when the app is not running.
  • Included a few different improvements to scrolling in the GVR SDK for Unity:
    • GvrPointerScrollInput no longer directly accesses GvrControllerInput.
      Instead, input is piped through GvrBasePointer just like it is for
      GvrPointerInputModule. This makes it possible for the scroll events to
      work cross-platform with custom GvrBasePointer implementations.
    • Added the ability to respond to Scroll Events globally in
    • Added the ability to override scroll inertia settings on a per-GameObject
      basis by either implementing IGvrScrollSettings or using the script
  • Optimized GvrFps display by removing Canvas and replacing the Text component.
    • Renamed GvrFPSCanvas.prefab to GvrFPSDisplay.prefab.
  • Removed (unused) GvrDistortion.cginc.
  • GvrPointerPhysicsRaycaster no longer allocates memory every frame. It now
    uses RaycastNonAlloc/SphereCastNonAlloc. The size of the buffer for raycast
    hits is determined by the new serialized property maxRaycastHits.
  • It's now possible to use the pointer system with no main camera. A camera
    can be (optionally) specified on the overridePointerCamera field on
  • GvrDaydreamApi.LaunchVrHome() and Create() have new method signatures
    to communicate asynchronous implementation and to provide the caller with
    a way to know when the call has completed:
    GvrDaydreamApi.LaunchVrHomeAsync(Action<bool> callback),
    CreateAsync(Action<bool> callback).
  • Exposed TouchPosCentered, which remaps touchpad input from (-1, 1),
    centered on 0, and magnitude <= 1 (e.g. clamped to the circular touchpad)
  • Moved the Plugins folder underneath the GoogleVR folder so that future
    SDK upgrades are easier since the top level Plugins folder will no longer
    contain non-GVR and GVR content.
  • GVRVideoPlayerTexture no longer copies SurfaceTextures into Unity textures,
    but rather renders SurfaceTextures directly into the scene, optimizing it
    to use much less memory and GPU.
  • GVR Video Demo OBB sample video is now a stereo version of Big Buck Bunny.


  • Prevent serialized field properties in Google VR prefabs and scenes
    being set to null when editing them while build platform is not Android
    or iOS.
  • Fixed continuous calls to the Stop() method in the GvrAudioSource source.
  • Fixed a bug that caused the INTERNET permission to be added to the Android
    manifest unnecessarily when using the SDK.
  • GVRVideoPlayerTexture.SetDisplayTexture() now properly sets the display
  • GvrBuildProcessor now ignores non-Google VR target build platforms.
  • Fixed a bug that would cause GvrReticlePointer to render behind things
    with a sort order > than 0.
  • Added support for tracking all of a scene's cameras (that target at least
    one eye) in GvrEditorEmulator.
  • Fixed audio not showing up in iOS native integration builds
    (issue 618).