====== NervLandJS: A revolutionary 3D world sandbox in Web Browser ====== Or well... that's the idea at least... we are not quite there yet unfortunately 😅 But, anyway, Manu, here I will try to keep track of the state of this project, in case you ever have to stop working on it for lonnnnng months, and then your Alzheimer starts kicking in again, and you forget everything about it [//again...//] So below you will find a list of pages/blog posts/technical notes to help you remind yourself what you have been doing [//Yeahh I know... I'm talking to myself... ohh man... but, hey, who cares in the end ? 🤣//] * [[.notes:0001_landjs_run_instructions|Initial setup and run instructions]] * [[.notes:0002_landjs_terrainnode_review|Reviewing TerrainNode simple scene]] * [[.notes:0003_landjs_elevation_producer|Continuing on ElevationProducer implementation]] * [[.notes:0004_landjs_initial_tilesamplerz|Initial TileSamplerZ implementation]] * [[.notes:0005_landjs_normal_producer|NormalProducer and TileSampler]] * [[.notes:0006_landjs_using_producers|Using the Producers in the TerrainNode]] ====== NervLand: A revolutionary 3D world sandbox (maybe in Web Browser?) ====== So, following the final discussion in [[.notes:0006_landjs_using_producers|Using the Producers in the TerrainNode]] I think I should now rather try to build the NevLand app as a Rust app and see if I can use that more easily with multithreading support using a WebAssembly compilation. Thus, the adventure continues below: * [[.notes:0007_nvland_environment_setup|Environment setup & Introduction to Rust]] * [[.notes:0008_nvland_windowing|Windowing system]] ====== NervLand: Back to C++ world ====== * => Yeah... I eventually had to realize that Rust is simply not for me 🤣 * [[.notes:0009_nvland_cpp_environment_setup|Setting up proper C++ development environment]] * [[.notes:0010_nvland_management_project|Setting up management project]] * [[.notes:issue08_onnx_integration|Considering ONNX Integration (Issue #8)]] * [[.notes:issue19_webgpu_with_emscripten|WebGPU with Emscripten (Issue #19)]] * [[.notes:issue21_gui_rendering|GUI Rendering support (Issue #21)]] * [[.notes:issue23_wind_sway_animation|Wind Sway tree animation (Issue #23)]] ====== NervLand: Devlog videos ====== * **Devlog 0001**: * In this recording I mainly work on the clang "CXXMethod" cursors parsing to improve on the generation of a decorated name for those methods. * **Devlog 0002**: * In this recording I do the same thing as in the first video above but focus this time on the fullname for a ClassTemplate cursor. * **Devlog 0003**: * This time we focus on the **ClangParser** class and try to start some refactoring/optimization without breaking the existing parsing system. * **Devlog 0004**: * ✅ Moving the ClangParser:parseNamespace in dedicated file * ✅ Prepared the ''parseFunctionDecl()'' function * ✅ Replaced usage of ''reflection.Visibility'' with ''clang.Vis''' * ✅ Added ''Cursor:getNumChildren()'' * ✅ Removed ''ClangParser:resolveTypeRef()'' * ✅ Working on removal of ''ClangParser:getContextCursor()'' * **Devlog 0005**: * ✔️ Fixed handling of current "TemplateContext" for tk.Unexposed * ✔️ Removed context cursors functions from ClangParser * ✅ Added support for lua ''load_buffer'' C function * ✅ Investigated support for advanced require/load usage * **Devlog 0006**: * ✔️ Add support for LuaJIT profiler in nervbind * ✔️ Working on removal of ''ClangParser:getContextCursor()'' ? * ✔️ Initial refactoring of ''ClangParser:resolveType()'' * ✔️ Fixing bindings generation on linux systems * ✔️ Introducing Configurator to prepare NervBind configs * ✅ Fix error in QT bindings generation due to fullname caching * ✅ Fix invalid enum name in bindings * ✅ Initial build of the QT bindings module * **Devlog 0007**: * ✅ Build new libraries on linux: * HDF5-1.15.0 * openjpeg-2.5.0 * libpng-1.6.39 * eccodes-2.29.0 * ✅ Compile libuv-1.44.3 library and bindings: * [[https://github.com/luvit/luv/blob/master/docs.md|luv documentation]] * [[http://docs.libuv.org/en/v1.x/api.html|libuv documentation]] * **Devlog 0008/0009/0010**: * ✔️ Implement mechanism to start/stop lua threads from LuaManager: * ✅ Adding lua bindings for QGenericArgument * ✅ Implement support for message passing between threads in luaQT * ✔️ Add support for QObject as base provider in Luna bindings: opts.custom_providers = { "nv::RefObject", "QObject" } * ✔️ Updating custom ''LunaProvider'' to only delete widgets that are not in use. * ✔️ Fix crash with luna type map registration and multiple lua states creation. * ✔️ Add support to specify the context when connecting a lua function to a QT signal * ✔️ Add direct support for bindings loading in LuaState class * ✔️ Call the message_sent signal from inside the auxiliary lua state * **Devlog 0011**: * ✅ Advanced class template instantiation in NervLuna * ✅ Fix the issue with: ''Ignoring TypeAliasTemplateDecl cursor for base template class: nv::Vector'' * **Devlog 0012**: * ✅ Fix invalid unnamed union binding issue * ✔️ Fix anonymous class binding issue ====== Task & Notes ====== * [[nervland_task_list|Tasks list & TODOs]]