This week ended up mostly being digging up bugs in old code and fixing them. I’m set on working on the detail editor next, but the more I think about it the more I realize that I didn’t really have as much of an idea of the scope of this next part as I thought I did. There’s basically two reasons for this: First, each particle effect has a lot of different parameters, with each type of particle having a range of possible starting locations, velocities, rotations, distances, scales, etcetera, as well as a variable number of special-case per-update operations, and just creating a control panel to handle all of that stuff is a pretty substantial undertaking by itself. Second, the old detail editor code is rather hamfisted for something requiring as much flexibility as a particle effect does, so that means I would need to either jam these completely different control panels in side-by-side, which would be super ugly and tricky to debug, or completely rewrite the old control panel using the new tools I developed for the entity editor.
So here’s what I’ve decided: I’m going to consolidate all of the standard details and particle effects into one class – not sure what I’ll call it, but for now I’m calling it ParticleSystem. Standard level details will be essentially just single-instance particles which don’t move or respawn, and everything will be handled within the same interface. What that interface will be I haven’t quite gotten around to deciding yet, but I’m hoping that as I fold these classes together, nail down which parameters will require editing, how the data for an effect will be saved to and loaded from files, and generally get a feel for what this effects class is, I’ll start to get an idea for what it would take to edit a system of them in a fairly quick and easy manner.
This feels feasible. Again, a much larger project than I’d anticipated, but I think when I finish the first part I will have something much more straightforward and intuitive to use, and that will hopefully lend those same qualities to whatever I devise for an editor.