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; [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)] 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; } } }