Ralith / hypermine

A hyperbolic voxel game
Apache License 2.0
160 stars 20 forks source link

Add a basic GUI to Hypermine powered by yakui #395

Closed patowen closed 6 months ago

patowen commented 6 months ago

This PR adds a GUI with the following features:

image

patowen commented 6 months ago

Draft status: This version currently crashes intermittently when switching materials with a Vulkan validation error. Based on my own testing, I believe that this can be resolved when https://github.com/SecondHalfGames/yakui/pull/155 is merged, and this PR points to the new branch. See comment thread of https://github.com/Ralith/hypermine/pull/391 for details.

Otherwise, I think it's ready for review.

EDIT: Now that the PR has been merged, I'll upgrade this to a regular PR, although I am aware that some changes will still be needed. Thanks for reviewing!

patowen commented 6 months ago

While testing this, I encountered a (potentially rare) warning log after I closed the application saying the following: WARN sendmsg error: Os { code: 10093, kind: Uncategorized, message: "Either the application has not called WSAStartup, or WSAStartup failed." }, Transmit: { destination: [::1]:60027, src_ip: None, enc: None, len: 202, segment_size: None }

This seems to be a log from quinn-udp::log_sendmsg_error. I'm not sure whether it's important, since that might mean that Quinn tried to send a message after something was already finalized.

My cargo.lock has quinn at version 0.10.0 with quinn-udp at version 0.4.1 and quinn-proto at 0.10.5.

EDIT: Now that Quinn has been upgraded, this comment is likely irrelevant now. Thanks for upgrading it!

patowen commented 6 months ago

I had renamed the gui module to gui_state because it only contained a struct called GuiState and its implementation. However, I'm starting to prefer the name gui again because it seems like a good place to put future things, such as custom widgets etc.

I expect this code might see a fair bit of churn in future PRs just due to the uncertainty of how all the UI elements will work together.

Ralith commented 6 months ago

EDIT: Now that Quinn has been upgraded, this comment is likely irrelevant now. Thanks for upgrading it!

I don't think we changed anything that would be relevant to that error, FWIW. Sounds like something called WSACleanup unexpectedly, so if we ever see it reproducibly, that might be something to try to catch in a debugger. Out of scope of this PR, though.