Skip to content

2d operations#20

Merged
IamTheCarl merged 71 commits into
masterfrom
2d-ops
Jun 8, 2026
Merged

2d operations#20
IamTheCarl merged 71 commits into
masterfrom
2d-ops

Conversation

@IamTheCarl

Copy link
Copy Markdown
Owner

The big addition of this PR is polygons.
Well that was the original plan but there were some difficult bugs to iron out so I made a GUI, and then I felt the GUI needed to be polished off so I ended up making it look really nice (there's still a lot of work I want to do to it but this is a big and messy enough PR as it is).

So, the new features:

  • Bug fixes for our fork of Boolmesh
    • Specifically fixed a bug in how revolved parts join their end to their beginning
  • Added a bunch of 2D types
    • LineStrings
    • Polygons
    • PolygonSets
  • Added a bunch of related algorithms
    • Boolean operations
    • Linear Transformations
    • Centroids
    • Extrude
    • Revolve
    • Project
    • Slice
  • Interpreter changes
    • Now we support positional arguments to function and method calls (because naming everything all the time got annoying)
  • A GUI
    • 2d and 3d visualizers
    • Measurement grids
    • Event Logs
    • Navigation controls

IamTheCarl added 25 commits May 22, 2026 00:17
- Extract GridSettings to shared gui/src/grid.rs module
- Add billboard grid in 3D view that always faces the camera
- Grid positioned just past model center to avoid z-fighting
- Two-sided geometry with explicit front/back faces
- Line thickness scales with zoom to match 2D grid appearance
- Toggle via 'Show Grid' checkbox in toolbar
Replace HashableMap<ImString, Value> with IndexMap<ImString, Value>
across all dictionary-related types in the interpreter crate. This
provides deterministic insertion-order preservation for dictionary
members.

Changes:
- Add indexmap v2 dependency with serde feature
- Switch DictionaryData.members to IndexMap
- Switch StructDefinition.members to Arc<IndexMap>
- Add ArgumentName enum for future positional arg support
- Update build_struct_definition! macro to use IndexMap
- Update all test assertions to match new types
- Remove manual Hash impl (not needed without dict-as-key usage)

426 tests pass.
@IamTheCarl

Copy link
Copy Markdown
Owner Author

It seems the wayland dependency has broken the CI checks.

Replace rust-cache with nix-based builds using `nix develop -c` to ensure
all build dependencies (openssl, pkg-config, fenix toolchain) are available.
Simplify test matrix to ubuntu-latest since nix handles the dependency
management.
@IamTheCarl IamTheCarl merged commit e493495 into master Jun 8, 2026
4 checks passed
@IamTheCarl IamTheCarl mentioned this pull request Jun 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant