New animations based on physics
Captain's Log: Stardate 78220.2
I'm trying to wrap up work on the new 3D renderer, I really am, but... it added so many new possibilities that I have gotten distracted by adding cool rendering stuff.
Today I added something I've wanted for a long time, which is having a bunch of animations based on parameters and physics stuff. For example:
- Bodies get bigger and smaller based on mass
- Bodies get duller or shinier based on damping
- Springs get thicker based on stiffness
- Springs get redder based on tension
- Links light up based on the signals they pass through
There's more than can be done here, but these were the basic things that were easy to do. Here's a demo:
I also got some non-cosmetic work done today, mostly around making the new renderer more stable. If I have one chief complaint about Google Filament, it's that it is a complete train wreck with regards to how objects that you create using the APIs get cleaned up. Some objects you have to manually delete. Some you have to pass to Engine::destroy(). Some have object-specific destroy functions you have to call. Some objects you have to allocate yourself, and of these, some you delete and some Filament will delete. And pretty much none of these semantics are documented. It's a total design disaster. Anyway, making sure everything gets cleaned up correctly has been a chore, but I think I'm there (for now).
I think tomorrow I will go back to just trying to get the renderer infrastructure finished, so things like handling vsync correctly, fixing some issues with the 3D window resizing, and getting the 3D assets to load faster. After that I will fix the 2D GUI overlay on the 3D graphics, and hopefully cut a new pre-alpha release pretty quickly.