mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-04 02:14:01 +00:00
Snow is no longer offered anywhere a style can be chosen: the Visual Presets tray, keyboard shortcut 7, the Cockpit vision carousel, and the set_visual_style voice action. The shader and its labels go with it; weather snowfall and the SNOW weather condition are unaffected. Share links keep working. Snow's enum code (6) stays reserved, so a compact or long-form link that names it opens on Normal and drops the Snow shader parameters without reporting them as unknown. A Scene Director shot saved with Snow plays on Normal too. Snow's frozen share defaults matched Normal's apart from those parameters, so no other setting in an old link changes meaning. The legacy voice-schema pins restore Snow before hashing, so the unchanged pins still prove nothing else moved; the complete Realtime payload digest is re-derived.
65 lines
1.9 KiB
JavaScript
65 lines
1.9 KiB
JavaScript
export const COCKPIT_VISION_MODES = Object.freeze([
|
|
'optical',
|
|
'crt',
|
|
'nvg',
|
|
'thermal',
|
|
'anime',
|
|
'noir',
|
|
]);
|
|
|
|
const TARGET_STYLE_BY_MODE = Object.freeze({
|
|
crt: 'retro',
|
|
nvg: 'surveillance',
|
|
thermal: 'thermal',
|
|
anime: 'anime',
|
|
noir: 'noir',
|
|
});
|
|
|
|
const COCKPIT_MODE_BY_STYLE = Object.freeze({
|
|
normal: 'optical',
|
|
retro: 'crt',
|
|
surveillance: 'nvg',
|
|
thermal: 'thermal',
|
|
anime: 'anime',
|
|
noir: 'noir',
|
|
});
|
|
|
|
/** Normalize a requested Cockpit vision mode to the unfiltered Normal entry. */
|
|
export function normalizeCockpitVisionMode(mode) {
|
|
return COCKPIT_VISION_MODES.includes(mode) ? mode : 'optical';
|
|
}
|
|
|
|
/** Start Cockpit on the equivalent supported map preset. */
|
|
export function cockpitVisionModeForStyle(style) {
|
|
return COCKPIT_MODE_BY_STYLE[String(style || '').toLowerCase()] || 'optical';
|
|
}
|
|
|
|
/** Settle pending map-style crossfades and return their intended final intensities. */
|
|
export function captureCockpitVisionBaseline(stages, transitions) {
|
|
const baseline = {};
|
|
for (const [name, stage] of Object.entries(stages)) {
|
|
const intensity = transitions?.get(name)?.to ?? stage.uniforms.intensity;
|
|
stage.uniforms.intensity = intensity;
|
|
transitions?.delete(name);
|
|
baseline[name] = intensity;
|
|
}
|
|
return baseline;
|
|
}
|
|
|
|
/**
|
|
* Apply Cockpit-only stage intensities without changing any shader parameters.
|
|
* Returns the temporary style whose parameters should be shown, or null.
|
|
*/
|
|
export function applyCockpitVisionStageIntensities(stages, mode) {
|
|
const next = normalizeCockpitVisionMode(mode);
|
|
if (next === 'optical') {
|
|
for (const stage of Object.values(stages)) stage.uniforms.intensity = 0;
|
|
return null;
|
|
}
|
|
|
|
for (const stage of Object.values(stages)) stage.uniforms.intensity = 0;
|
|
const target = TARGET_STYLE_BY_MODE[next] || null;
|
|
if (target && stages[target]) stages[target].uniforms.intensity = 1;
|
|
return target;
|
|
}
|