public void RotateRight(float degrees) { CatchUpWithPlayer(); localPlayerTransform *= ca.Transform.Rotate(ca.Quaternion.RotationY(Mathf.Deg2Rad * degrees)); globalObjectService.VrPlayer.transform.localPosition = localPlayerTransform.Offset.ToUnity(); globalObjectService.VrPlayer.transform.localRotation = localPlayerTransform.Rotation.ToUnity(); }
public VrHeadPositionService(IStoryService storyService, IGlobalObjectService globalObjectService, IEventRoutingService eventRoutingService) { this.storyService = storyService; this.globalObjectService = globalObjectService; localPlayerTransform = ca.Transform.Identity; eventRoutingService.Subscribe <INewFrameEvent>(typeof(IVrHeadPositionService), nameof(OnNewFrame), OnNewFrame); }
public void ResetHeadPosition() { CatchUpWithPlayer(); var cameraGlobalTransform = globalObjectService.MainCamera.transform.ToClarity(); var playerGlobalTransform = globalObjectService.VrPlayer.transform.ToClarity(); var cameraLocalTransform = cameraGlobalTransform * playerGlobalTransform.Invert(); var cameraLocalRotationY = cameraLocalTransform.Rotation.ToUnity().eulerAngles.y; cameraLocalTransform.Rotation = Quaternion.Euler(0, cameraLocalRotationY, 0).ToClarity(); cameraLocalTransform.Offset.Y = 0; localPlayerTransform = cameraLocalTransform.Invert(); globalObjectService.VrPlayer.transform.localRotation = localPlayerTransform.Rotation.ToUnity(); globalObjectService.VrPlayer.transform.localPosition = localPlayerTransform.Offset.ToUnity(); }