First hacked-together build with new renderer

Captain's Log: Stardate 78226.3

I'm getting closer to being able to release the next version of the pre-alpha installer. Today I finished up some basic stuff that the new renderer needs to go live.

One thing I frequently do when building out something new is instead of adding proper error handling, I'll just add assertions everywhere that an error can happen. This is obviously a no-go for production code, but it helps get the core functionality up and running much more quickly. This is especially useful when I'm not sure whether what I'm building will work, or I'm not sure about the architecture I've chosen. The assertions help make sure everything is working correctly, and then once I'm happy with the core code I can go through and replace them all with real error handling. I can be sure I removed all the assertions because I have a pre-submit that rejects them.

In this case, I had to do a little bit of wiring to get errors out of the 3D rendering thread into the main GUI thread to display to the user in a thread-safe way. That's all done now.

I also took the time today to redo the camera rotation & pan controls based on a suggestion from joey. Rotation is now done by an unmodified right-click drag, and pan is shift + right-click drag. You no longer need the middle mouse button, which is nice on touchpads where you can't do it like MacOS (but it's there if you want on desktop, or touchpads that do 3-finger tap).

I am still not super happy with the camera controls, but today I had an idea for how to make them even easier. Blender has a nice little widget in the corner of the window that shows the camera orientation, and you can left-click drag it to rotate the camera. I don't really use this, as I prefer the hotkeys/mouse, but it's much more discoverable/approachable, and possibly easier for some people on touchpads. Plus it will work with touchscreens. I'll extend Blender's idea a bit to add panning as well. But this will probably wait for a while.

Next up is fixing some issues with window resizing on MacOS. I think that I'm not correctly handling the fact that Retina displays have 2 physical pixels per 1 logical pixel.


© 2024 Anukari LLC, All Rights Reserved
Contact Us|Legal