Docs: hygiene sweep — stale/misattributed doc-comments + CLAUDE.md example
- Repoint CLAUDE.md testing example from the deleted HeartbeatSystemTests to HealthApplyDamageSystemTests. - Stale deleted-system refs: ResourceFieldSpawner/ClutterFieldSpawner(+Authoring) now cite RoomFieldSystem (was ExpeditionFieldSystem); BuildPlaceRequest drops the deleted RegionTransitRequest from its 'mirrors' list. - Stale package version: 'Netcode 1.13.2' -> 'Netcode 1.x' in ProjectileClassificationSystem + BuildPlaceRequest. - WorldCollisionComponents: remove the duplicated EnvironmentMask summary line; FeelConfig: fix the mangled 'is hitmap)' sentence. Comment/doc only; compiles clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -6,7 +6,7 @@ namespace ProjectM.Authoring
|
|||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Authoring for the baked <see cref="ClutterFieldSpawner"/> singleton (mirrors ResourceFieldSpawnerAuthoring).
|
/// Authoring for the baked <see cref="ClutterFieldSpawner"/> singleton (mirrors ResourceFieldSpawnerAuthoring).
|
||||||
/// Place once in the gameplay subscene and assign the Blight-clutter ghost prefab; ExpeditionFieldSystem
|
/// Place once in the gameplay subscene and assign the Blight-clutter ghost prefab; RoomFieldSystem
|
||||||
/// scatters the clutter each expedition alongside the resource field. Carries no transform.
|
/// scatters the clutter each expedition alongside the resource field. Carries no transform.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class ClutterFieldSpawnerAuthoring : MonoBehaviour
|
public class ClutterFieldSpawnerAuthoring : MonoBehaviour
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace ProjectM.Authoring
|
|||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Authoring for the baked <see cref="ResourceFieldSpawner"/> singleton (mirrors StorageSpawnerAuthoring).
|
/// Authoring for the baked <see cref="ResourceFieldSpawner"/> singleton (mirrors StorageSpawnerAuthoring).
|
||||||
/// Place once in the gameplay subscene and assign the resource-node ghost prefab; ExpeditionFieldSystem
|
/// Place once in the gameplay subscene and assign the resource-node ghost prefab; RoomFieldSystem
|
||||||
/// scatters the field each Expedition. Carries no transform.
|
/// scatters the field each Expedition. Carries no transform.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class ResourceFieldSpawnerAuthoring : MonoBehaviour
|
public class ResourceFieldSpawnerAuthoring : MonoBehaviour
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ namespace ProjectM.Client
|
|||||||
[CreateAfter(typeof(GhostReceiveSystem))]
|
[CreateAfter(typeof(GhostReceiveSystem))]
|
||||||
// NOTE: intentionally NOT [BurstCompile]d. The cross-assembly generic
|
// NOTE: intentionally NOT [BurstCompile]d. The cross-assembly generic
|
||||||
// SnapshotDataBufferComponentLookup.TryGetComponentDataFromSnapshotHistory<T>() trips a Burst
|
// SnapshotDataBufferComponentLookup.TryGetComponentDataFromSnapshotHistory<T>() trips a Burst
|
||||||
// internal compiler error (type-hash resolution) on Netcode 1.13.2. Classification only runs when
|
// internal compiler error (type-hash resolution) on Netcode 1.x (installed: 6.5.0). Classification only runs when
|
||||||
// ghost spawns are received (a cold path, not the prediction loop), so a managed job is fine here.
|
// ghost spawns are received (a cold path, not the prediction loop), so a managed job is fine here.
|
||||||
public partial struct ProjectileClassificationSystem : ISystem
|
public partial struct ProjectileClassificationSystem : ISystem
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -239,7 +239,7 @@ namespace ProjectM.Client
|
|||||||
// Deferred-items pass (2026-06)
|
// Deferred-items pass (2026-06)
|
||||||
BodyFlashEnabled = true;
|
BodyFlashEnabled = true;
|
||||||
BodyFlashColor = new Color(3.2f, 2.8f, 2.2f, 1f); // hot near-white overdrive (multiplies the Synty atlas base map)
|
BodyFlashColor = new Color(3.2f, 2.8f, 2.2f, 1f); // hot near-white overdrive (multiplies the Synty atlas base map)
|
||||||
PlayerHurtFlashColor = new Color(2.6f, 0.55f, 0.4f, 1f); // C2: hot red-orange body flash when the player is hitmap)
|
PlayerHurtFlashColor = new Color(2.6f, 0.55f, 0.4f, 1f); // C2: hot red-orange body flash when the player is hit
|
||||||
BodyFlashDurationSec = 0.16f;
|
BodyFlashDurationSec = 0.16f;
|
||||||
RemoteSwingEnabled = true;
|
RemoteSwingEnabled = true;
|
||||||
RemoteSlashColor = new Color(1.4f, 2.2f, 2.8f, 1f); // cool teammate arc
|
RemoteSlashColor = new Color(1.4f, 2.2f, 2.8f, 1f); // cool teammate arc
|
||||||
|
|||||||
@@ -4,10 +4,10 @@ namespace ProjectM.Simulation
|
|||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Client -> server request to build a structure of <see cref="StructureType"/> at grid cell
|
/// Client -> server request to build a structure of <see cref="StructureType"/> at grid cell
|
||||||
/// (<see cref="CellX"/>, <see cref="CellZ"/>). A one-off action, so an RPC (mirrors StorageOpRequest /
|
/// (<see cref="CellX"/>, <see cref="CellZ"/>). A one-off action, so an RPC (mirrors StorageOpRequest).
|
||||||
/// RegionTransitRequest). StructureType is a byte; the cell is two int scalars (NOT an int2) to stay
|
/// StructureType is a byte; the cell is two int scalars (NOT an int2) to stay
|
||||||
/// within the project's scalar-only RPC payload precedent (avoids first-of-its-kind composite-math-in-RPC
|
/// within the project's scalar-only RPC payload precedent (avoids first-of-its-kind composite-math-in-RPC
|
||||||
/// codegen risk on Netcode 1.13.2). The server re-validates legality + cost authoritatively.
|
/// codegen risk on Netcode 1.x). The server re-validates legality + cost authoritatively.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public struct BuildPlaceRequest : IRpcCommand
|
public struct BuildPlaceRequest : IRpcCommand
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -3,11 +3,11 @@ using Unity.Entities;
|
|||||||
namespace ProjectM.Simulation
|
namespace ProjectM.Simulation
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Baked singleton holding the Blight-clutter ghost prefab + field shape. ExpeditionFieldSystem reads it
|
/// Baked singleton holding the Blight-clutter ghost prefab + field shape. RoomFieldSystem reads it
|
||||||
/// (alongside <see cref="ResourceFieldSpawner"/>) to scatter <see cref="Count"/> clutter ghosts within
|
/// (alongside <see cref="ResourceFieldSpawner"/>) to scatter <see cref="Count"/> clutter ghosts within
|
||||||
/// <see cref="Radius"/> of the expedition origin on the SAME empty->occupied epoch edge as the resource
|
/// <see cref="Radius"/> of the expedition origin on the SAME empty->occupied epoch edge as the resource
|
||||||
/// field (seeded distinctly so clutter and nodes don't co-locate), and clears them on occupied->empty.
|
/// field (seeded distinctly so clutter and nodes don't co-locate), and clears them on occupied->empty.
|
||||||
/// OPTIONAL — if the singleton is absent, ExpeditionFieldSystem simply skips clutter. Mirrors
|
/// OPTIONAL — if the singleton is absent, RoomFieldSystem simply skips clutter. Mirrors
|
||||||
/// <see cref="ResourceFieldSpawner"/>; carries no transform.
|
/// <see cref="ResourceFieldSpawner"/>; carries no transform.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public struct ClutterFieldSpawner : IComponentData
|
public struct ClutterFieldSpawner : IComponentData
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ using Unity.Entities;
|
|||||||
namespace ProjectM.Simulation
|
namespace ProjectM.Simulation
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Baked singleton holding the resource-node ghost prefab + field shape. ExpeditionFieldSystem reads it to
|
/// Baked singleton holding the resource-node ghost prefab + field shape. RoomFieldSystem reads it to
|
||||||
/// scatter <see cref="Count"/> nodes within <see cref="Radius"/> of the expedition region origin on each
|
/// scatter <see cref="Count"/> nodes within <see cref="Radius"/> of the expedition region origin on each
|
||||||
/// Expedition phase entry (seeded by the cycle number). Mirrors <see cref="StorageSpawner"/>.
|
/// Expedition phase entry (seeded by the cycle number). Mirrors <see cref="StorageSpawner"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ namespace ProjectM.Simulation
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public struct WorldCollisionConfig : IComponentData
|
public struct WorldCollisionConfig : IComponentData
|
||||||
{
|
{
|
||||||
/// <summary>BelongsTo bitmask of the Environment physics layer (<c>1u << layerIndex</c>).</summary>
|
|
||||||
/// <summary>BelongsTo bitmask of the Environment physics layer (<c>1u << layerIndex</c>).</summary>
|
/// <summary>BelongsTo bitmask of the Environment physics layer (<c>1u << layerIndex</c>).</summary>
|
||||||
public uint EnvironmentMask;
|
public uint EnvironmentMask;
|
||||||
|
|
||||||
|
|||||||
@@ -153,7 +153,7 @@ Full rules: `.claude/skills/dots-dev/references/dots-conventions.md` (in-repo; t
|
|||||||
|
|
||||||
## Testing
|
## Testing
|
||||||
|
|
||||||
- **Default = plain-Entities EditMode test:** create a `World`, register the system in `SimulationSystemGroup`, tick, assert. Public API, version-independent. Example: `Assets/_Project/Tests/EditMode/HeartbeatSystemTests.cs`. Run via `run_tests(mode="EditMode", assembly_names=["ProjectM.Tests.EditMode"])`.
|
- **Default = plain-Entities EditMode test:** create a `World`, register the system in `SimulationSystemGroup`, tick, assert. Public API, version-independent. Example: `Assets/_Project/Tests/EditMode/HealthApplyDamageSystemTests.cs`. Run via `run_tests(mode="EditMode", assembly_names=["ProjectM.Tests.EditMode"])`.
|
||||||
- **`NetCodeTestWorld` is `internal`** (6.5.0 re-check: not even loaded outside test asmdefs), exposed only to a fixed `[InternalsVisibleTo]` allow-list — to use it, name a test asmdef to match an entry (e.g. `Unity.NetcodeSamples.EditModeTests`) or vendor the test utils. Netcode world boot is covered by the Play Mode check, not a NetCodeTestWorld test. See [[DR-001_Netcode_Test_Harness]].
|
- **`NetCodeTestWorld` is `internal`** (6.5.0 re-check: not even loaded outside test asmdefs), exposed only to a fixed `[InternalsVisibleTo]` allow-list — to use it, name a test asmdef to match an entry (e.g. `Unity.NetcodeSamples.EditModeTests`) or vendor the test utils. Netcode world boot is covered by the Play Mode check, not a NetCodeTestWorld test. See [[DR-001_Netcode_Test_Harness]].
|
||||||
- Burst/source-gen errors surface at editor compile, not a plain build — always `read_console` after script changes, and run a play/tick test, not just a compile. **Cover swept hit-detection with a tunnelling regression test** (the point-check tunnel bug doesn't surface in a point-based unit test).
|
- Burst/source-gen errors surface at editor compile, not a plain build — always `read_console` after script changes, and run a play/tick test, not just a compile. **Cover swept hit-detection with a tunnelling regression test** (the point-check tunnel bug doesn't surface in a point-based unit test).
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user