protected override JobHandle OnUpdate(JobHandle inputDeps)
        {
            if (!VRDF_Components.SetupVRIsReady)
            {
                return(inputDeps);
            }

            NativeArray <float3> rotationAxisOutput = new NativeArray <float3>(1, Allocator.TempJob);
            NativeArray <float>  currentSpeedOutput = new NativeArray <float>(1, Allocator.TempJob);

            var job = new RotationJob
            {
                DeltaTime    = Time.DeltaTime,
                RotationAxis = rotationAxisOutput,
                CurrentSpeed = currentSpeedOutput
            }.Schedule(this, inputDeps);

            job.Complete();

            VRDF_Components.RotateVRCameraAround(rotationAxisOutput[0], currentSpeedOutput[0]);

            rotationAxisOutput.Dispose();
            currentSpeedOutput.Dispose();

            return(inputDeps);
        }
        protected override void OnUpdate()
        {
            if (!VRDF_Components.SetupVRIsReady)
            {
                return;
            }

            Entities.ForEach((ref NonLinearUserRotation nlur, ref ControllersInteractionType cit, ref BaseInputCapture bic, ref TouchpadInputCapture tic, ref InteractionThumbPosition itp) =>
            {
                if (!nlur.HasAlreadyRotated && InteractionChecker.IsInteractingTouchpad(bic, cit, itp, tic))
                {
                    VRDF_Components.RotateVRCameraAround(new float3(0.0f, tic.ThumbPosition.x, 0.0f), nlur.DegreesToRotate);
                    nlur.HasAlreadyRotated = true;
                }
                else if (nlur.HasAlreadyRotated && InteractionChecker.IsNotInteractingTouchpad(bic, cit, itp, tic))
                {
                    nlur.HasAlreadyRotated = false;
                }
            });
        }