mirror of
https://github.com/SlimeVR/SlimeVR-Server.git
synced 2026-04-06 02:01:58 +02:00
add a way to skip rest calibration tutorial (#1186)
Co-authored-by: lucas lelievre <loucass003@gmail.com>
This commit is contained in:
@@ -702,6 +702,7 @@ onboarding-calibration_tutorial-status-waiting = Waiting for you
|
||||
onboarding-calibration_tutorial-status-calibrating = Calibrating
|
||||
onboarding-calibration_tutorial-status-success = Nice!
|
||||
onboarding-calibration_tutorial-status-error = The tracker was moved
|
||||
onboarding-calibration_tutorial-skip = Skip tutorial
|
||||
|
||||
## Tracker assignment tutorial
|
||||
onboarding-assignment_tutorial = How to prepare a Slime Tracker before putting it on
|
||||
|
||||
@@ -12,6 +12,7 @@ import { useTrackers } from '@/hooks/tracker';
|
||||
import { useRestCalibrationTrackers } from '@/hooks/imu-logic';
|
||||
import { averageVector, Vector3FromVec3fT } from '@/maths/vector3';
|
||||
import { Vector3 } from 'three';
|
||||
import { useTimeout } from '@/hooks/timeout';
|
||||
|
||||
export enum CalibrationStatus {
|
||||
SUCCESS,
|
||||
@@ -29,10 +30,12 @@ export function CalibrationTutorialPage() {
|
||||
const [calibrationStatus, setCalibrationStatus] = useState(
|
||||
CalibrationStatus.WAITING
|
||||
);
|
||||
const [skipButton, setSkipButton] = useState(false);
|
||||
const { timer, isCounting, startCountdown, abortCountdown } = useCountdown({
|
||||
duration: IMU_CALIBRATION_TIME,
|
||||
onCountdownEnd: () => setCalibrationStatus(CalibrationStatus.SUCCESS),
|
||||
});
|
||||
useTimeout(() => setSkipButton(true), 10000);
|
||||
const { useConnectedIMUTrackers } = useTrackers();
|
||||
const connectedIMUTrackers = useConnectedIMUTrackers();
|
||||
const restCalibrationTrackers =
|
||||
@@ -192,6 +195,13 @@ export function CalibrationTutorialPage() {
|
||||
{l10n.getString('onboarding-continue')}
|
||||
</Button>
|
||||
</div>
|
||||
<Button
|
||||
variant="secondary"
|
||||
to="/onboarding/assign-tutorial"
|
||||
className={classNames('xs:ml-auto', !skipButton && 'hidden')}
|
||||
>
|
||||
{l10n.getString('onboarding-calibration_tutorial-skip')}
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
<div className="mobile:hidden flex self-center w-[32rem] mobile:absolute">
|
||||
|
||||
@@ -1,11 +1,21 @@
|
||||
import { useMemo } from 'react';
|
||||
import { FlatDeviceTracker } from './app';
|
||||
|
||||
const IGNORED_BOARDS = new Set(['Sony Mocopi', 'Haritora']);
|
||||
|
||||
export function useIsRestCalibrationTrackers(
|
||||
connectedTrackers: FlatDeviceTracker[]
|
||||
): boolean {
|
||||
const imuExists = useMemo(
|
||||
() => connectedTrackers.some((tracker) => tracker.tracker.info?.isImu),
|
||||
() =>
|
||||
connectedTrackers.some(
|
||||
(tracker) =>
|
||||
tracker.tracker.info?.isImu &&
|
||||
!(
|
||||
tracker.device?.hardwareInfo?.boardType &&
|
||||
IGNORED_BOARDS.has(tracker.device?.hardwareInfo?.boardType as string)
|
||||
)
|
||||
),
|
||||
[connectedTrackers]
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user