Files
2026-06-04 21:49:03 -07:00

62 lines
2.9 KiB
C#

using UnityEngine;
namespace ProjectM.Client
{
/// <summary>
/// Live-tunable knobs for the client-only WORLD-FEEDBACK slice (harvesting nodes + smashing Blight clutter).
/// A static bridge (mirrors <see cref="FeelConfig"/>) so values can be poked at runtime via MCP execute_code
/// without a recompile (e.g. <c>ProjectM.Client.WorldFeelConfig.ClearFovKick = 1.2f;</c>). Read ONLY by
/// <see cref="WorldFeedbackSystem"/> (managed, main-thread). NEVER read from a [BurstCompile] system
/// (managed-static + Color-in-Burst hazards). <see cref="ResetDefaults"/> re-stamps on play-enter via
/// [RuntimeInitializeOnLoadMethod] because statics survive fast-enter-playmode reloads (else a poked value
/// leaks across play-enters).
/// </summary>
public static class WorldFeelConfig
{
/// <summary>Master gate for harvest/clear feedback.</summary>
public static bool Enabled;
/// <summary>Particle burst when a node/clutter loses hit-points (a chip).</summary>
public static int ChipBurstCount;
/// <summary>Particle burst when a node depletes / clutter shatters (the clear).</summary>
public static int ClearBurstCount;
/// <summary>Soft SFX volume on a chip.</summary>
public static float ChipSfxVolume;
/// <summary>SFX volume on a shatter / deplete.</summary>
public static float ClearSfxVolume;
/// <summary>Camera FOV kick (deg) when clutter shatters near the player — the satisfying smash. 0 = off.</summary>
public static float ClearFovKick;
/// <summary>Camera shake when clutter shatters near the player.</summary>
public static float ClearShake;
/// <summary>Only fire prune VFX when the despawned entity's last position is within this distance of the
/// local player, so a region-transit despawn storm at +1000 X stays silent off-camera.</summary>
public static float ProximityRange;
/// <summary>Tint for wild-Aether clutter shatter + Aether-node chips (HDR orange, pushes past bloom).</summary>
public static Color WildTint;
/// <summary>Tint for Ore-node chips (HDR amber).</summary>
public static Color OreTint;
/// <summary>Tint for Biomass-node chips (HDR sickly green).</summary>
public static Color BiomassTint;
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)]
public static void ResetDefaults()
{
Enabled = true;
ChipBurstCount = 6;
ClearBurstCount = 18;
ChipSfxVolume = 0.30f;
ClearSfxVolume = 0.55f;
ClearFovKick = 0.8f;
ClearShake = 0.12f;
ProximityRange = 40f;
WildTint = new Color(3.0f, 1.1f, 0.25f);
OreTint = new Color(2.6f, 1.9f, 0.7f);
BiomassTint = new Color(0.9f, 2.4f, 0.8f);
}
}
}