mirror of
https://github.com/exogen/t2-mapper.git
synced 2026-04-29 00:05:51 +00:00
split up context, rebuild
This commit is contained in:
parent
1db338f855
commit
91111f8986
15 changed files with 51 additions and 29 deletions
|
|
@ -9,6 +9,8 @@ import {
|
|||
} from "react";
|
||||
|
||||
const SettingsContext = createContext(null);
|
||||
const DebugContext = createContext(null);
|
||||
const ControlsContext = createContext(null);
|
||||
|
||||
type PersistedSettings = {
|
||||
fogEnabled?: boolean;
|
||||
|
|
@ -22,6 +24,14 @@ export function useSettings() {
|
|||
return useContext(SettingsContext);
|
||||
}
|
||||
|
||||
export function useDebug() {
|
||||
return useContext(DebugContext);
|
||||
}
|
||||
|
||||
export function useControls() {
|
||||
return useContext(ControlsContext);
|
||||
}
|
||||
|
||||
export function SettingsProvider({ children }: { children: ReactNode }) {
|
||||
const [fogEnabled, setFogEnabled] = useState(true);
|
||||
const [speedMultiplier, setSpeedMultiplier] = useState(1);
|
||||
|
|
@ -29,20 +39,26 @@ export function SettingsProvider({ children }: { children: ReactNode }) {
|
|||
const [audioEnabled, setAudioEnabled] = useState(false);
|
||||
const [debugMode, setDebugMode] = useState(false);
|
||||
|
||||
const value = useMemo(
|
||||
const settingsContext = useMemo(
|
||||
() => ({
|
||||
fogEnabled,
|
||||
setFogEnabled,
|
||||
speedMultiplier,
|
||||
setSpeedMultiplier,
|
||||
fov,
|
||||
setFov,
|
||||
audioEnabled,
|
||||
setAudioEnabled,
|
||||
debugMode,
|
||||
setDebugMode,
|
||||
}),
|
||||
[fogEnabled, speedMultiplier, fov, audioEnabled, debugMode, setDebugMode]
|
||||
[fogEnabled, speedMultiplier, fov, audioEnabled]
|
||||
);
|
||||
|
||||
const debugContext = useMemo(
|
||||
() => ({ debugMode, setDebugMode }),
|
||||
[debugMode, setDebugMode]
|
||||
);
|
||||
|
||||
const controlsContext = useMemo(
|
||||
() => ({ speedMultiplier, setSpeedMultiplier }),
|
||||
[speedMultiplier, setSpeedMultiplier]
|
||||
);
|
||||
|
||||
// Read persisted settings from localStoarge.
|
||||
|
|
@ -103,8 +119,12 @@ export function SettingsProvider({ children }: { children: ReactNode }) {
|
|||
}, [fogEnabled, speedMultiplier, fov, audioEnabled, debugMode]);
|
||||
|
||||
return (
|
||||
<SettingsContext.Provider value={value}>
|
||||
{children}
|
||||
<SettingsContext.Provider value={settingsContext}>
|
||||
<DebugContext.Provider value={debugContext}>
|
||||
<ControlsContext.Provider value={controlsContext}>
|
||||
{children}
|
||||
</ControlsContext.Provider>
|
||||
</DebugContext.Provider>
|
||||
</SettingsContext.Provider>
|
||||
);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue