World: ground bundle — macro-blend ground materials, per-room dressing scatter, biome ground tint, base flora + worn paths
Phase 1.5b ground bundle (operator: "the ground is very plain"): - Ground materials rebuilt: Grass/Sand base maps at real tiling (22x/26x, was a 2x smear across 90-130u) + Synty normal maps + a generated 0.5-centered macro noise detail texture (LINEAR import — sRGB detail mul2x darkens 2.3x) with baked rim vignette. Meadow ground moved OFF the shared Synty asset onto project-owned Mat_Ground_Meadow. - WorldAtmosphereSystem: per-room-biome ground tint on the expedition quads via MaterialPropertyBlock (Meadow green / Cavern blue / Blight purple; Arid sand default), lerped alongside the existing fog/ambient palettes. - RoomDressingSystem + RoomDressingConfig (new, client-only observe-only): 26 biome-flavoured cosmetic props per room, scattered inside the room's ACTUAL shape (same RoomLayoutMath authority as the server, distinct 0xD2E55 hash stream), deterministic from the replicated run seed, torn down with the room, colliders stripped. 47 curated prefab refs wired in Game.unity (build-safe). - Base: 357 curated flora props re-enabled (bushes/wildflowers/grass clumps; buildings/pond/FX stay parked) + generated worn-dirt paths storage->warpgate and storage->base gate. Live-verified: dressing 26/26 inside x[981,1023] z[-11,12] y=0, 11 varieties, 0 colliders; teardown on run end; Meadow tint converged to exact target; 470 EditMode green; console clean. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace ProjectM.Client
|
||||
{
|
||||
/// <summary>
|
||||
/// Live-tunable knobs + build-safe prefab references for <see cref="RoomDressingSystem"/> — the Phase 1.5b
|
||||
/// per-room cosmetic dressing scatter. Mirrors the <see cref="AmbientMotionConfig"/>/<see cref="VFXConfig"/>
|
||||
/// bridge idiom: a MonoBehaviour in the gameplay scene with a static <see cref="Instance"/> the client
|
||||
/// presentation system reads. Prefab arrays are serialized scene references (never Resources.Load — that is
|
||||
/// build-stripped). Absent config or an empty set = no dressing (the feature is soft-off).
|
||||
/// </summary>
|
||||
public sealed class RoomDressingConfig : MonoBehaviour
|
||||
{
|
||||
public static RoomDressingConfig Instance;
|
||||
|
||||
[Header("Master")]
|
||||
public bool Enabled = true;
|
||||
[Min(0)] public int CountPerRoom = 26;
|
||||
[Min(0.1f)] public float ScaleMin = 0.85f;
|
||||
[Min(0.1f)] public float ScaleMax = 1.35f;
|
||||
|
||||
[Header("Per-biome cosmetic prop sets (RoomBiomeId: Meadow/Arid/Cavern/Blight)")]
|
||||
public GameObject[] Meadow;
|
||||
public GameObject[] Arid;
|
||||
public GameObject[] Cavern;
|
||||
public GameObject[] Blight;
|
||||
|
||||
void OnEnable() { Instance = this; }
|
||||
void OnDisable() { if (Instance == this) Instance = null; }
|
||||
|
||||
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)]
|
||||
static void ResetStatics() { Instance = null; }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user