dev:epic
This is an old revision of the document!
Here are my notes I use when I have to work on this system.
Here is how a C++ class can call into it's lua instance. I think this is where I was confused by what you were asking. Sorry, I don't know why it wasn't apparent to me.
- I have a LuaObject that has access to it's Rtti/metadata.
- I also have my own header parser that generates this code.
- So I have access to the actual class name such as “Forge::Light”.
- Every class has a class metatable that represent that class in lua
- This metatables are created and populated during initialization.
- There is master table stored in the lua registry, that has a mapping from class names to metatables.
- There is also a mapping of c++ lightuserdata (pointer/instance) to metatables.
- Also there is a list for garbage collection that is used when lua has full ownership of a c++ instance.
- When a userdata is collected, this list is checked too see if the instance needs collecting.
- If it does, it uses the class destructor.
Here is a stripped down class that shows the basics of how the system calls a C++ function from lua.
1) Header files are marked up using comments to expose/export classes and functions.
2) Here is the generated cpp that gets added to the project.
/home/admin/domains/wiki.d20dungeons.com/public_html/data/attic/dev/epic.1666889772.txt.gz · Last modified: (external edit)


