using UnityEngine;
namespace ProjectM.Client
{
///
/// Live-tunable knobs for the client-only WORLD-FEEDBACK slice (harvesting nodes + smashing Blight clutter).
/// A static bridge (mirrors ) so values can be poked at runtime via MCP execute_code
/// without a recompile (e.g. ProjectM.Client.WorldFeelConfig.ClearFovKick = 1.2f;). Read ONLY by
/// (managed, main-thread). NEVER read from a [BurstCompile] system
/// (managed-static + Color-in-Burst hazards). re-stamps on play-enter via
/// [RuntimeInitializeOnLoadMethod] because statics survive fast-enter-playmode reloads (else a poked value
/// leaks across play-enters).
///
public static class WorldFeelConfig
{
/// Master gate for harvest/clear feedback.
public static bool Enabled;
/// Particle burst when a node/clutter loses hit-points (a chip).
public static int ChipBurstCount;
/// Particle burst when a node depletes / clutter shatters (the clear).
public static int ClearBurstCount;
/// Soft SFX volume on a chip.
public static float ChipSfxVolume;
/// SFX volume on a shatter / deplete.
public static float ClearSfxVolume;
/// Camera FOV kick (deg) when clutter shatters near the player — the satisfying smash. 0 = off.
public static float ClearFovKick;
/// Camera shake when clutter shatters near the player.
public static float ClearShake;
/// 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.
public static float ProximityRange;
/// Tint for wild-Aether clutter shatter + Aether-node chips (HDR orange, pushes past bloom).
public static Color WildTint;
/// Tint for Ore-node chips (HDR amber).
public static Color OreTint;
/// Tint for Biomass-node chips (HDR sickly green).
public static Color BiomassTint;
// ---- Node harvest BODY feedback (NodeFeedbackSystem: client-only PostTransformMatrix scale). ----
/// Smallest a node/clutter shrinks to just before it depletes (fraction of its full size).
public static float NodeMinScale;
/// Brief extra scale-up on each harvest hit (the per-hit "reaction" pop); decays over NodePopDurationSec.
public static float NodeHitPopScale;
/// Seconds for the per-hit scale-pop to decay back.
public static float NodePopDurationSec;
/// Tiny camera FOV kick per harvest hit near the player (impact); 0 = off.
public static float ChipFovKick;
/// Tiny camera shake per harvest hit near the player.
public static float ChipShake;
public static void ResetDefaults()
{
Enabled = true;
ChipBurstCount = 12; // beefed from 6 -> a clearly visible chip spray per harvest hit
ClearBurstCount = 22;
ChipSfxVolume = 0.42f; // beefed from 0.30 -> a punchier "tink"
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);
NodeMinScale = 0.35f; // node shrinks to ~1/3 size as it nears depletion
NodeHitPopScale = 0.16f; // brief +16% pop on each hit
NodePopDurationSec = 0.16f;
ChipFovKick = 0.35f; // subtle per-hit camera impact near the player
ChipShake = 0.05f;
}
}
}