Sunday, May 31, 2015

FMod - Psychedelic Find Tool Redesign

Yesterday, I made some changes to the File Emitter that make it a lot nicer to work with. Previously, the output folder had to be specified before it would do anything. That field is now auto-filled with the current directory, but it can be changed just like before. Some visual tweaks were made to the list view that make the user feel more in control of what's going on.

Today, I made some changes to the Essential Manipulator. Holding the Control key now hides the paste preview overlay so it's easier to see the level when about to start copying. (This change was actually made in PastePreviewRenderPlane, so it applies to the Paster as well.) Also, the EM now keeps a record of the tiles it has modified in the current drag-place operation and checks it before putting down the stamp; it's kind of like TOM's snap paste mode but lets you make more interesting patterns. (Abiathar intelligently checks for collisions with already-modified tiles, not grid alignment.)

I realized that the Tile Instance Locator was pretty lame. It was a tool that duplicated (poorly) the editing capabilities of the Tile Picker to allow editing while seeing where there are instances of the selected tiles. So, it was impossible to perform more advanced operations (rectangle fill, replace, essential-manipulate) and get the find highlights at the same time.

I decided to remove the Tile Instance Locator and add a "find" view option instead, like TOM has. This is implemented as an ephemeral rendering plane on all levels, which is notified by the Abiathar core when tiles are placed, the current level is switched, or a different tile is selected. (There are still some kinks to be worked out with situations in which the overlay is disabled, changes to the level are made, and then the overlay is re-enabled.) It seems to be working well; since all tools notify the core of changes to levels, getting the notifications collated was pretty easy. The count of instances now appears in the status bar rather than the tool information place in the lower-right.

It was slightly harder to pick a color for the overlay that isn't confusable with the selection overlay but is also easy to see on all 16 EGA colors. I tried lots of colors, but none of them stood out on top of every possible game color. So, I added a fun feature: clicking the instance count label in the status bar causes the overlay to enter pulse mode. The overlay changes color between a red and a green two times per second in this mode, making it easy to see where there are instances of the selected tile. It's pretty psychedelic and exciting. (I'll record a video soon so you can see it in action, once I work out all the bugs.)

A crash bug involving graphics reload was fixed by forcing all extensions to re-register new instances of their tools when the graphics cache is destroyed.

No comments:

Post a Comment