godot-extended-libraries / godot-next

Godot Node Extensions - Basic Node Extensions for Godot Engine
MIT License
959 stars 61 forks source link

Framework and script(s) needed for C++ NativeScript integrations. #42

Open willnationsdev opened 5 years ago

willnationsdev commented 5 years ago

For this project and godot-journey, there are C++ scripts that need to exist. I would prefer to make compiling these scripts follow the same workflow that Godot Engine uses, with several sub-libraries compiled in a single execution, and built on the same infrastructure as it and the C++ GDNative bindings use for consistencies' sake: scons. This means writing an SConstruct file that can accommodate all of the projects' needs.

What I think would really be useful here is a script that will meet the requirements of any arbitrary combination of NativeScript C++ projects. I believe such a script would have the following requirements:

Based on my limited knowledge of scons and Godot's module system, I think the per-project-customization features would involve each project having an SCSub file which could then be used by the top-level SConstruct script to plug into the compilation framework. Bonus points if we can program the scons script to generate a template SCSub file for an arbitrary project. Bonus-Bonus points if we work out a way to integrate all of this with a custom Godot resource that can replace the ongoing/unfinished work in the godot-builder repository.

nonunknown commented 4 years ago

I would love to join this... Also in my case as an example, just providing the .cpp and .h** files would be perfect, I agree with you in case of Godot-Next turn into a godot module w/ a custom build.

willnationsdev commented 4 years ago

Most of the requirements for this are now bundled into godotengine/godot-proposals#119 which I have a bit of a WIP going on. Unfortunately, due to a monumentally large work thing that has come up, I'm likely going to have less and less time to devote to Godot stuff for a while. But, @nonunknown, if you are interested in spearheading some of that proposal's work, I'd be happy to give you guidance on it, etc. To be honest, for that proposal, the vast majority of the "work" is something that script code can do. You'd just need to write it all as a plugin to get it into a testable state and then port that script code to an editor-only module.