-
Notifications
You must be signed in to change notification settings - Fork 3
Comparing changes
Open a pull request
base repository: rfg-modding/Nanoforge
base: v0.21.1
head repository: rfg-modding/Nanoforge
compare: master
Commits on Jul 17, 2022
-
Basic app window with win32 & rendering with d3d11
In this branch I'm rewriting Nanoforge in the programming language called Beef. C++ is just becoming too much of a hassle to work with. Beef has what I like about C++ & fixes the things I dislike about it. It should be a much nicer development experience, have quicker iteration time, and less bugs & memory leaks. A lot of old code needs to be rewritten anyway since it hasn't held up to changes in the projects scope & overall goals. So the rewrite isn't as much of a time cost as it might've been. I copied over some code from a closed source project of mine so there might be some comments that don't make sense in the context of Nanoforge. The existing code has a nice way of adding new per-frame systems & specifying when in the frame + which app states they should run in. Also has a state stack, resource system, event system, and built in profiling. There's lots of ways this can be improved, but this is a good start. Next up I'll get dear imgui working along with a basic dockspace & main menu bar. After that I'll have to figure out what the order of rewrite will be and which systems should be redesigned instead of just porting the old code to Beef. Some systems were written back when Nanoforge was just a simple zone viewer. Now that the scope of the project is much larger they aren't sufficient. A lot of code also needs to be updated to use the editor data model. I think the syntax improvements & features Beef has also open up some possibilities that weren't feasible in C++. Some features won't immediately come to the rewrite. This time around I'll be prioritizing the map editor first and expanding out from there with other features in mind.
Configuration menu - View commit details
-
Copy full SHA for d59f12a - Browse repository at this point
Copy the full SHA d59f12aView commit details
Commits on Jul 31, 2022
-
Ported the example win32 & d3d11 backends from the main imgui repo. I didn't bother implementing gamepads or multi-viewport yet since Nanoforge doesn't use them yet. Multi viewports also looks like a pain to convert.
Configuration menu - View commit details
-
Copy full SHA for 7c124e5 - Browse repository at this point
Copy the full SHA 7c124e5View commit details
Commits on Aug 21, 2022
-
Smoothed frametime for UI use. There's a lot of fluctuation per frame which makes the actual frame time harder to read
Configuration menu - View commit details
-
Copy full SHA for 74b30a4 - Browse repository at this point
Copy the full SHA 74b30a4View commit details -
Remove gui layers & move imgui extension functions to that namespace. Gui layers are a concept from the project I used as a base for this. Not needed by Nanoforge at the moment
Configuration menu - View commit details
-
Copy full SHA for 1a3895d - Browse repository at this point
Copy the full SHA 1a3895dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 046d353 - Browse repository at this point
Copy the full SHA 046d353View commit details -
Add main menu bar generation from gui panel paths
Bringing over all the gui code from the c++ version. Next up is documents & change tracking & save confirmation dialogs
Configuration menu - View commit details
-
Copy full SHA for 41be9e3 - Browse repository at this point
Copy the full SHA 41be9e3View commit details -
Configuration menu - View commit details
-
Copy full SHA for c215d07 - Browse repository at this point
Copy the full SHA c215d07View commit details -
Configuration menu - View commit details
-
Copy full SHA for 9bae5d0 - Browse repository at this point
Copy the full SHA 9bae5d0View commit details -
Partially ported PackfileVFS from the C++ version. Will implement the rest of it when it's needed. Just using the existing behavior for now. Will rewrite it in the near future since it's not sufficient for Nanoforge anymore.
Configuration menu - View commit details
-
Copy full SHA for 7be1e3d - Browse repository at this point
Copy the full SHA 7be1e3dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 99c2d16 - Browse repository at this point
Copy the full SHA 99c2d16View commit details -
Configuration menu - View commit details
-
Copy full SHA for 3539709 - Browse repository at this point
Copy the full SHA 3539709View commit details
Commits on Sep 23, 2022
-
Configuration menu - View commit details
-
Copy full SHA for 1472b5c - Browse repository at this point
Copy the full SHA 1472b5cView commit details
Commits on Jan 15, 2023
-
Initial partial implementation of ProjectDB + editor data model
Still need to finish implementing DiffUtil, transactions, undo/redo, serialization, and buffers. I think it'll be easier to write that stuff with an actual use case though so I'm gonna start implementing the map editor first.
Configuration menu - View commit details
-
Copy full SHA for 64df9ce - Browse repository at this point
Copy the full SHA 64df9ceView commit details -
Configuration menu - View commit details
-
Copy full SHA for 51df188 - Browse repository at this point
Copy the full SHA 51df188View commit details -
Configuration menu - View commit details
-
Copy full SHA for 9ba33b4 - Browse repository at this point
Copy the full SHA 9ba33b4View commit details -
Configuration menu - View commit details
-
Copy full SHA for a3e293b - Browse repository at this point
Copy the full SHA a3e293bView commit details -
Configuration menu - View commit details
-
Copy full SHA for f470d88 - Browse repository at this point
Copy the full SHA f470d88View commit details
Commits on Jan 19, 2023
-
Configuration menu - View commit details
-
Copy full SHA for f9f5417 - Browse repository at this point
Copy the full SHA f9f5417View commit details -
Configuration menu - View commit details
-
Copy full SHA for 082ef8a - Browse repository at this point
Copy the full SHA 082ef8aView commit details -
Actual logging to file + console not yet implemented. The API is unlikely to change though so I can start adding log statements now and automatically have them later once this class is fully implemented.
Configuration menu - View commit details
-
Copy full SHA for 1fdfa0d - Browse repository at this point
Copy the full SHA 1fdfa0dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 28a52cf - Browse repository at this point
Copy the full SHA 28a52cfView commit details
Commits on Jan 23, 2023
-
Edit tracking + undo redo for primitive properties
Working on class/struct properties next. Don't want to resort to making every complex field a full EditorObject like I did in C++. That created some serious bloat in the DB text file and could add unecessary overhead if editor objects get heavier in the future.
Configuration menu - View commit details
-
Copy full SHA for 72ef349 - Browse repository at this point
Copy the full SHA 72ef349View commit details
Commits on Jan 24, 2023
-
Configuration menu - View commit details
-
Copy full SHA for bfd1667 - Browse repository at this point
Copy the full SHA bfd1667View commit details -
Fix a lot of warnings and build output spam
It made it difficult to find the actual issues. Should try to fix all warnings when reasonable so bugs/mistakes aren't overlooked.
Configuration menu - View commit details
-
Copy full SHA for 5247036 - Browse repository at this point
Copy the full SHA 5247036View commit details
Commits on Jan 28, 2023
-
Configuration menu - View commit details
-
Copy full SHA for 9076318 - Browse repository at this point
Copy the full SHA 9076318View commit details -
Configuration menu - View commit details
-
Copy full SHA for e68b26a - Browse repository at this point
Copy the full SHA e68b26aView commit details -
Temporarily disable imgui version check
Looks like imgui-beef is using the wrong version string in their implementation. Either need to wait for them to fix it or submit a PR.
Configuration menu - View commit details
-
Copy full SHA for a6d78ed - Browse repository at this point
Copy the full SHA a6d78edView commit details -
Indicate pre-release status in version
I'd like v1.0.0 to be the first public release of the rewrite
Configuration menu - View commit details
-
Copy full SHA for 7c6e4ce - Browse repository at this point
Copy the full SHA 7c6e4ceView commit details
Commits on Jan 29, 2023
-
Configuration menu - View commit details
-
Copy full SHA for 22db67e - Browse repository at this point
Copy the full SHA 22db67eView commit details -
Configuration menu - View commit details
-
Copy full SHA for d55ee2c - Browse repository at this point
Copy the full SHA d55ee2cView commit details -
Configuration menu - View commit details
-
Copy full SHA for e05b357 - Browse repository at this point
Copy the full SHA e05b357View commit details
Commits on Feb 2, 2023
-
- Renamed code generation functions from `GenerateXXX()` to `EmitXXX()` for clarity and to match style used by some corlib code generation examples. - Improved code generation for more complex types like strings and lists. This will be changed again in the near future since I'm still working out how to properly handle complex field types. I'm gonna finish implementing the zone file importer first to have some complex data to test the system on. The current code doesn't properly track changes to properties that are classes, structs, or containers. - Made name argument optional for `DiffUtil.CreateObject()`.
Configuration menu - View commit details
-
Copy full SHA for 571f516 - Browse repository at this point
Copy the full SHA 571f516View commit details -
- Remove extension methods that were moved into the common lib - Update gitignore
Configuration menu - View commit details
-
Copy full SHA for f28308a - Browse repository at this point
Copy the full SHA f28308aView commit details -
This is the basis for the zone file importer. RfgTools exposes a read-only interface for reading data from zone files. The Nanoforge ZoneImporter class converts that data to NFs internal data model. Next up: - Implement the rest of the object class readers needed for MP/WC maps. SP object classes won't be implemented until SP editing is added since there's ~30 SP object classes. - Get the projectDB + transactions working for more complex types. Using the data generated by the zone importer to test it on. - Implement the rest of the importers needed for maps (terrain, rocks, buildings, textures). - Implement map rendering (terrain, rocks, buildings, etc).
Configuration menu - View commit details
-
Copy full SHA for 8a43a5f - Browse repository at this point
Copy the full SHA 8a43a5fView commit details
Commits on Feb 5, 2023
-
Implement remaining MP types for ZoneImporter
Still a bunch of SP only types not implemented. Leaving them for later to save time so I can get V1 of the rewritten map editor out sooner. Rewrite will only support MP and WC editing to start.
Configuration menu - View commit details
-
Copy full SHA for 3e298d1 - Browse repository at this point
Copy the full SHA 3e298d1View commit details
Commits on Feb 8, 2023
-
Configuration menu - View commit details
-
Copy full SHA for 33a0ba1 - Browse repository at this point
Copy the full SHA 33a0ba1View commit details -
Configuration menu - View commit details
-
Copy full SHA for e6b6789 - Browse repository at this point
Copy the full SHA e6b6789View commit details
Commits on Feb 10, 2023
-
Using the right click "regenerate" button wasn't filling out namespace. Made a temporary work-around in the generator to fix this.
Configuration menu - View commit details
-
Copy full SHA for f8d2ef0 - Browse repository at this point
Copy the full SHA f8d2ef0View commit details -
Configuration menu - View commit details
-
Copy full SHA for cf8de5b - Browse repository at this point
Copy the full SHA cf8de5bView commit details
Commits on Feb 11, 2023
-
Add few more type checks to handle new types introduced by ZoneImporter. This will continue to be updated as other importers are added. I think a more general approach should be made for structs and classes so any struct/class field is supported. Structs and classes that don't inherit `EditorObject` will likely be treated as plain data. It might need a concept of ownership too. That would let the system distinguish between referenced objects and fields which must be classes to manage complex data. Though if they're complex enough to be a class maybe they should be required to inherit `EditorObject`. I'll figure it out as I work on the remaining importers. They'll have more complex data to test with.
Configuration menu - View commit details
-
Copy full SHA for 339855a - Browse repository at this point
Copy the full SHA 339855aView commit details
Commits on Feb 25, 2023
-
Configuration menu - View commit details
-
Copy full SHA for 0df9986 - Browse repository at this point
Copy the full SHA 0df9986View commit details
Commits on Feb 26, 2023
-
Adds bounding box rendering for map documents. Mesh rendering hasn't been added yet but shouldn't require many changes. The hard part of porting from C++ has is done. - Port scene, renderer resources, and render math from NF++ - Update ReleaseCOM to also null the D3D ptrs to make it clear that they've been released - Make BuildConfig a static class instead of a resource. Its values are constant so it makes more sense to be static. I'm not so sure that the resource system has any value either. It was an idea inherited from another project and based on the Bevy game engine resources. It doesn't make as much sense here since my code isn't strictly functional like bevy code is.
Configuration menu - View commit details
-
Copy full SHA for cf5bd2d - Browse repository at this point
Copy the full SHA cf5bd2dView commit details
Commits on Feb 27, 2023
-
Move renderer debug define to BuildConfig
This way I don't have to define and update it in every file that uses it
Configuration menu - View commit details
-
Copy full SHA for f6c34cd - Browse repository at this point
Copy the full SHA f6c34cdView commit details
Commits on Mar 5, 2023
-
Add basic implementation for ProjectDB buffers
Still need to port over the tiny buffer optimization from the C++ version and make them work with the undo/redo system.
Configuration menu - View commit details
-
Copy full SHA for d9750d1 - Browse repository at this point
Copy the full SHA d9750d1View commit details -
Configuration menu - View commit details
-
Copy full SHA for 526a84d - Browse repository at this point
Copy the full SHA 526a84dView commit details -
Still requires changes to be fully supported by undo/redo + need loading for the baked lighting and minimap textures. Going to add texture loading soon since it'll be needed for high lod terrain and buildings to look pretty.
Configuration menu - View commit details
-
Copy full SHA for aeaa5c8 - Browse repository at this point
Copy the full SHA aeaa5c8View commit details -
Configuration menu - View commit details
-
Copy full SHA for 280c6c4 - Browse repository at this point
Copy the full SHA 280c6c4View commit details -
Missing a lot of features from the C++ version. WIll implement fully once map import and project serialization are working.
Configuration menu - View commit details
-
Copy full SHA for 74fbac7 - Browse repository at this point
Copy the full SHA 74fbac7View commit details
Commits on Mar 12, 2023
-
Still need to add a few things: - Stitch mesh loading - Rock mesh loading - Road mesh loading - Texture loading Adding these next along with some basic systems for asset loading and texture searching. Should make it easier to load assets from packfiles + fix performance issues when loading many files from str2_pc files. The texture search helper will be a starting point for replacing/improving the texture index from the C++ version of NF, which had issues once we started creating brand new map files or changing packfiles.
Configuration menu - View commit details
-
Copy full SHA for 544ab53 - Browse repository at this point
Copy the full SHA 544ab53View commit details
Commits on Mar 13, 2023
-
See common lib commit abfc58900c18c3bbe8e1be173d53eceee9693c38 for more info. Only used VecX<f32> 99% of the time. Making them generic just made the code more complicated, more of a pain to type, and more pain to develop when having to deal with many possible field types in the vectors.
Configuration menu - View commit details
-
Copy full SHA for 41c09a5 - Browse repository at this point
Copy the full SHA 41c09a5View commit details
There are no files selected for viewing
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.