BS-JD-101 - Brush authoring schema and hydration MVP #10

Closed
opened 2026-06-06 01:46:24 -04:00 by Rbanh · 4 comments
Owner

Summary

Add a convex brush authoring component that serializes as planes/faces and hydrates into generated mesh/collider children.

Why

Native brush geometry is the foundation for blockout workflows without requiring external model imports.

Implementation notes

  • Add an authoring brush component with stable face/vertex IDs.
  • Store convex planes/faces, material refs, and generation settings in scene-safe data.
  • Hydrate into generated mesh and optional collider children.
  • Strip generated runtime/editor helper entities from saved scenes.

Acceptance criteria

  • Convex brush data serializes in scenes and migrates with schema.
  • Hydration creates visible mesh and collider output.
  • Generated entities are never saved.
  • Brush actor appears in hierarchy/inspector with clear metadata.

Tests/docs

Schema migration, save-strip, and hydration tests. Update README/docs/editor with basic brush behavior.

## Summary Add a convex brush authoring component that serializes as planes/faces and hydrates into generated mesh/collider children. ## Why Native brush geometry is the foundation for blockout workflows without requiring external model imports. ## Implementation notes - Add an authoring brush component with stable face/vertex IDs. - Store convex planes/faces, material refs, and generation settings in scene-safe data. - Hydrate into generated mesh and optional collider children. - Strip generated runtime/editor helper entities from saved scenes. ## Acceptance criteria - [ ] Convex brush data serializes in scenes and migrates with schema. - [ ] Hydration creates visible mesh and collider output. - [ ] Generated entities are never saved. - [ ] Brush actor appears in hierarchy/inspector with clear metadata. ## Tests/docs Schema migration, save-strip, and hydration tests. Update README/docs/editor with basic brush behavior.
Rbanh added this to the M1 - Brush-based blockout milestone 2026-06-06 01:46:24 -04:00
Rbanh added the
roadmap:jackdaw
type:feature
priority:P0
area:brushes
labels 2026-06-06 01:46:24 -04:00
Author
Owner

Starting implementation on BS-JD-101.

Planned first slice:

  • Add shared brush authoring data (BrushDesc/faces/kind) with reflection/serialization.
  • Add a convex cube brush MVP and hydration into generated render mesh children.
  • Keep generated entities out of scene saves via existing hydration stripping pattern.
  • Register brush metadata in the inspector/Add Component path.
  • Add focused validation/tests and docs for the initial brush behavior.

Scope note: draw/edit tools remain BS-JD-102/103; this slice is the data + hydration foundation.

Starting implementation on BS-JD-101. Planned first slice: - Add shared brush authoring data (`BrushDesc`/faces/kind) with reflection/serialization. - Add a convex cube brush MVP and hydration into generated render mesh children. - Keep generated entities out of scene saves via existing hydration stripping pattern. - Register brush metadata in the inspector/Add Component path. - Add focused validation/tests and docs for the initial brush behavior. Scope note: draw/edit tools remain BS-JD-102/103; this slice is the data + hydration foundation.
Author
Owner

Development progress update for BS-JD-101 - Brush authoring schema and hydration MVP:

Implemented locally, pending QA/signoff before commit:

  • Added persisted ActorKind::Brush and BrushDesc schema with cube default, face IDs, planes, per-face material/texture refs, UV params, smoothing group, and shadow flags.
  • Added brush mesh hydration that spawns generated mesh children from active brush components and strips generated data before save.
  • Added actor validation rules for brush actors and scene migration backfill for older scene objects containing BrushDesc.
  • Wired Brush into reflection, scene save allowlist, history snapshots/undo-redo, Add Component registry, inspector card, hierarchy/actor icons, and viewport actor icon category handling.
  • Added docs: ADR 0021 and docs/editor/brushes.md.

Verification so far:

  • cargo fmt --check
  • cargo test -p shared brush
  • cargo test -p scene brush
  • cargo check -p shared --all-targets
  • cargo check -p scene --all-targets
  • cargo check -p editor --all-targets
  • cargo check --workspace --all-targets
  • cargo check --workspace --all-targets --all-features

Leaving this ticket open until editor QA confirms the MVP behavior.

Development progress update for `BS-JD-101 - Brush authoring schema and hydration MVP`: Implemented locally, pending QA/signoff before commit: - Added persisted `ActorKind::Brush` and `BrushDesc` schema with cube default, face IDs, planes, per-face material/texture refs, UV params, smoothing group, and shadow flags. - Added brush mesh hydration that spawns generated mesh children from active brush components and strips generated data before save. - Added actor validation rules for brush actors and scene migration backfill for older scene objects containing `BrushDesc`. - Wired Brush into reflection, scene save allowlist, history snapshots/undo-redo, Add Component registry, inspector card, hierarchy/actor icons, and viewport actor icon category handling. - Added docs: ADR 0021 and `docs/editor/brushes.md`. Verification so far: - `cargo fmt --check` - `cargo test -p shared brush` - `cargo test -p scene brush` - `cargo check -p shared --all-targets` - `cargo check -p scene --all-targets` - `cargo check -p editor --all-targets` - `cargo check --workspace --all-targets` - `cargo check --workspace --all-targets --all-features` Leaving this ticket open until editor QA confirms the MVP behavior.
Author
Owner

Follow-up fix for brush viewport selection:

  • Updated viewport picking to resolve hit generated mesh children back to their authored LevelObject parent.
  • Explicit actor icons and visualizer proxies still keep priority/target behavior.
  • Editor-only helper children remain ignored unless they are explicit selectable proxies.
  • Updated docs/editor/README.md picking note.

Verification:

  • cargo fmt --check
  • cargo check -p editor --all-targets
  • cargo test -p shared brush
  • cargo test -p scene brush
  • cargo check --workspace --all-targets
  • cargo check --workspace --all-targets --all-features

Still pending editor QA/signoff before commit.

Follow-up fix for brush viewport selection: - Updated viewport picking to resolve hit generated mesh children back to their authored `LevelObject` parent. - Explicit actor icons and visualizer proxies still keep priority/target behavior. - Editor-only helper children remain ignored unless they are explicit selectable proxies. - Updated `docs/editor/README.md` picking note. Verification: - `cargo fmt --check` - `cargo check -p editor --all-targets` - `cargo test -p shared brush` - `cargo test -p scene brush` - `cargo check --workspace --all-targets` - `cargo check --workspace --all-targets --all-features` Still pending editor QA/signoff before commit.
Author
Owner

Completed and committed as 9f95ba3 Add brush authoring schema.

Included the QA follow-up fix for selecting brush generated mesh children in the viewport. User QA passed for creation, save/reload, and direct geometry selection.

Final verification before commit:

  • cargo fmt --check
  • cargo check -p editor --all-targets
  • cargo test -p shared brush
  • cargo test -p scene brush
  • cargo check --workspace --all-targets
  • cargo check --workspace --all-targets --all-features
Completed and committed as `9f95ba3 Add brush authoring schema`. Included the QA follow-up fix for selecting brush generated mesh children in the viewport. User QA passed for creation, save/reload, and direct geometry selection. Final verification before commit: - `cargo fmt --check` - `cargo check -p editor --all-targets` - `cargo test -p shared brush` - `cargo test -p scene brush` - `cargo check --workspace --all-targets` - `cargo check --workspace --all-targets --all-features`
Rbanh closed this issue 2026-06-06 05:42:36 -04:00
Sign in to join this conversation.
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Falling-Metal-Interactive/Blacksite#10
No description provided.