Future Work
Generators
- Static VTables Make vtables available as addresses without needing an instance of the object first. Also provide vtable size via attribute argument. Would be integrated with the virtual function generator and generate a properly-sized vtable struct.
-
Inheritance
[Inherits<T>] attribute that generates struct members from the parent into the child so all fields and methods show as available without having to do
AtkTextNode->AtkResNodefor example. This generator would need info from all other generators so first combine all generators into a single generator (relatively easy) beforehand.
IDA
- Reformat data.yml There are some constructs we don't really support well. Might switch off yaml to something "simpler" since we don't need yaml features.
- CExporter Will likely rewrite this using Roslyn syntax analysis rather than reflection. In addition to exporting types, export method signatures.
- Rewrite import script Import types and use method signatures to set function argument types appropriately. Also want to pull in some other forms of smart renaming (rename EXD getters via the root, maybe rename unknown agents and addons automatically with their IDs and uld names, more ideas here???)
Other
Anything I'm forgetting. Feel like we've talked about other stuff before.
I feel like some way to indicate which structs have been 'validated' after a patch (anything that didnt change size is probably safe, and anything that changed size and has had its offsets verified) would be nice. There's no doubt numerous "broken" (outdated) offsets and having some way of tracking that would be useful.
- CExporter Will likely rewrite this using Roslyn syntax analysis rather than reflection. In addition to exporting types, export method signatures.
This recently received quite the rework and is better at pulling all the data now instead of just struct types. This also included a rewrite of the import method since the file type and layout changed from using c++ headers to a YAML layout
- Rewrite import script Import types and use method signatures to set function argument types appropriately. Also want to pull in some other forms of smart renaming (rename EXD getters via the root, maybe rename unknown agents and addons automatically with their IDs and uld names, more ideas here???)
IDA now has the fullrun script that runs the data.yml import then exdgetters then structimporter so the only extra addition would possibly be unknown agents and addons