This information was originally hosted on the Ninjacade Project page, but I wanted to clean up that page so I’ve moved it here. Although another team member was originally responsible for the level editor, he left our team mid-semester and therefore an editor needed to be created incredibly quickly. To leverage already existing systems like Graphics, I built an In-Engine level editor using ImGUI. It was made up of three modules: Level Tools, Entity Tools, and Tilemap Tools.
Level Tools
Level tools were relatively simple and self explanatory. Designers had the ability to create levels, create and instantly load levels, reload levels, quick save levels, and save a level as a different name. Although these operations are somewhat basic, errors in this module had the potential to be catastrophic. Consequently, I added a large amount of error checking to this module.
Entity Tools
Entity tools were far more complicated and easily took me the longest amount of time to implement. Designers could create entities, destroy entities, add components to entities, remove components from entities, and modify properties of components. Transform properties (translation, rotation, scale) in particular very commonly need editing, so I added mouse controls to easily modify those properties, as shown in the gif below.
Tilemap Tools
The tilemap tools allowed the designers to easily build levels by clicking on a tile from a dynamic resource library and then clicking on the space in game where they would like to place the tile. It also has an “Active” check-box, which shows/hides the grid of empty tiles and enables/disables tilemap editing.