dexyfex / CodeWalker

https://www.gta5-mods.com/tools/codewalker-gtav-interactive-3d-map
453 stars 202 forks source link

Major rewrite and update to .NET 8 #224

Open niekschoemaker opened 8 months ago

niekschoemaker commented 8 months ago

Ehh yeah, this is a pretty big one.

Been working on this for a while for past few weeks, managed to get performance quick, like real quick compared to original version.

And decided to upgrade the whole code base to .NET 6 (this would be up for debate, but in my opinion this is a great step for the longevity of the project as a whole and adds a lot of modern feature)

I also added unit testing (since I was doing a lot of changes having something to hold my hand and ensure I didn't break things was necessary) for some components and will probably continue to add some more tests during the weeks.

Changes in short:

the main thing I did to get the performance improvements was adding spans to avoid unecessary memory allocations and adding multi threading, these two together made it quite a lot quicker as there's not that many GC pauses anymore (from around 50%+ spend in GC to around 10%)

I don't really expect this to be accepted instantly, so please take your time to look it through as it contains a lot of changes, but I myself have been running it for a while and it appears to work without issues (mostly use it for models,textures and meta files from explorer en project form)

niekschoemaker commented 8 months ago

And I know, the commits are large, that's because this started as me just screwing around in the code base a bit, but ended up being quite a massive undertaking in the end, which in my opinion is good enough quality to deserve a pull request.

niekschoemaker commented 6 months ago

Added a ton more updates, performance should be even better now, and more reliable.

Also updated it further to .NET 8 (since that has been released in the meantime)

Some optimizations aren't the neatest they can be, but still working on that, so still improving and refactoring the code as I go.