Fast-64 / fast64

Blender based editor for scenes, meshes, and more in first-party N64 games
GNU General Public License v3.0
317 stars 73 forks source link

[SM64] Smarter and standardized includes #449

Open Lilaa3 opened 2 months ago

Lilaa3 commented 2 months ago

I'd really like some opinions on write_or_delete_if_found's complexity.

Added new functions, write_or_delete_if_found, write_includes and update_actor_includes. Remove writeIfNotFound and deleteIfFound

write_or_delete_if_found is a smarter version of writeIfNotFound and deleteIfFound, it optionally removes comments prior to searching (but doesn't remove comments from the actual file of course) and lets you pass in regex patterns (without worrying about comments!) which allows much smarter searchs that can tolerate whitespace, it adds a trailing newline to the file instead of each include having to include a newline (broke stuff before), the footer can now be optional (allows no endif which is great for files that use the GCC #pragma once macro)

update_actor_includes standardizes group and level includes into one place for ease of editing, one of the major differences is that level exports no longer use the full path (levels/actor/my_file.c would instead be /actor/my_file.c) this should allow level header type actors to actually update headers on custom non decomp levels but that is not done in this PR (existing includes are unaffected!).

Benifts from this pr:

  1. New line issues are fixed
  2. Code quality (hopefully, maybe it could be better still?)
  3. Smarter searchs
  4. Less file writes (probably not significant to anyone's ssd lifespan but who knows!)
  5. More verbose
  6. Cleaner level actor includes
Lilaa3 commented 2 months ago

While I like my current idea, I think I can iron out some stuff and actually update writeIfNotFound, looking into that right now

Lilaa3 commented 2 months ago

I'm actually done this time, just needed to change stuff for animations rework