I watch some woodworking channels on YouTube. And you know, most of them don't really do much woodwork. They spend 99% of their time making things to store their tools in, or systems to make moving their machinery about, or to make cleaning up easier. The hobby feeds the hobby.
It occurs to me that I do the same thing with game development, where instead of spending time to make games, I spend 99% of my time making tools to make games. And in this case specifically, I'm making tools to make tools.
So I started work binding up the tools system. There was a choice here. Do we use the existing tool system (Qt) or make our custom UI system work externally. I made the decision that tools should just use Qt. The tools system already uses Qt, we're not going to convert everything to our UI system.. so we're always going to have to access Qt - so just use that. Having a Frankenstein system of multiple UI systems is a Unity move.
So I got tool addons working, all hotloading c#, hotloading stylesheets, all feels good.
When designing an API for something I like to do an api stretch. So instead of binding everything for the sake of it, I choose something that I want to make possible and focus on achiving that.
This means that when you're binding you're doing it from an outsider looking in point of view, instead of the other way around. The point of binding to C# is to make things a billion times easier and remove all the bullshitting of c++.
So my stretch for a week was to make a node graph editor. This was simple enough because I had the source of the one Valve made as a guide.
This was something fun to iterate on, with the hotloading c#. It took me about 5 days to make, but keep in mind that I went in knowing barely anything about Qt, or its graphics views, or its event system - and had to bind all the widgets and paint stuff in c# (in a safe way that didn't try to access pointers of deleted objects etc).
The door has been kicked open. We're inside now. This shit is happening. It's inevitable. Hammer Addons.