void Update() { if ((!VrCamera.activeInHierarchy || !LeftController.activeInHierarchy || !RightController.activeInHierarchy) && (Time.time - LastWarningTimestamp) >= 1) { LastWarningTimestamp = Time.time; Debug.LogWarning("One or more VR Peripherals not active in hierarchy!"); } var previousOffsets = VRPeripheralOffsetsWriter.Data; var offsetsUpdate = new VRPeripheralOffsets.Update(); var newOffset = new TransformOffset(); if (LeftController.activeInHierarchy && ShouldUpdateOffset(LeftController.transform, previousOffsets.leftController, ref newOffset)) { offsetsUpdate.SetLeftController(newOffset); } if (RightController.activeInHierarchy && ShouldUpdateOffset(RightController.transform, previousOffsets.rightController, ref newOffset)) { offsetsUpdate.SetRightController(newOffset); } if (VrCamera.activeInHierarchy && ShouldUpdateOffset(VrCamera.transform, previousOffsets.head, ref newOffset)) { offsetsUpdate.SetHead(newOffset); } VRPeripheralOffsetsWriter.Send(offsetsUpdate); }
void OnComponentUpdated(VRPeripheralOffsets.Update update) { if (update.head.HasValue) { SetVRPeripheralModelTransform(Head, update.head.Value); } if (update.leftController.HasValue) { SetVRPeripheralModelTransform(LeftHand, update.leftController.Value); } if (update.rightController.HasValue) { SetVRPeripheralModelTransform(RightHand, update.rightController.Value); } }