Finish fixing the material color code. But it won't work until MineTest has dynamic lighting... another day another feature.
Extra checks for the bone positioning / rotation code
Many checks and consistency improvements to the client attachment code
Make a separate function for checking if a client object is attached. A more in-depth change will be needed here to fix reading of invalid pointers
Use a different method of fetching the parent. Fixes the mass segmentation faults when rendering an attachment (some still happen though)
Major change to how attachments are handled. Fix the last segmentaton fault, which was due to the parent becoming invalid while being refreshed / removed which would bause the child to remain attached to nothing. Parents remove their children when being deleted themselves and add them back when re-added. Attachments are stored inside a 2D a vector which easily allows both a child to find their parent and a parent to find its children.
Remove attachment list entry when an object is being permanently removed. Also avoid duplicate entries in this list when re-attaching the same object
The "big code comments" can now go away. Client attachments almost work properly, and I know what else needs to be done
The child ID can now be checked against the parent ID in content_cao.cpp so the parent can be detected. Actual attachment code to come
Divide attachment system between server attachments and client attachments, neither coded right now. As explained in the code comment:
// Attachments need to be handled on both the server and client.
// If we attach only on the server, models (which are client-side)
// can't be read so we don't know the origin and orientation of bones.
// If we attach only on the client, the real position of attachments is
// not updated and you can't click them for example.
New object property which allows changing the color and alpha of mesh materials. Due to the current lighting systems it doesn't work yet, but the full implementation is there
Framework for the attachment system, with no actual functionality yet
Send bone and player object to the setAttachment function in content_sao.cpp, but we need a way to translate it there and send it to the client
I will also want position and rotation offsets to be possible to apply to attachments
Network object ID from server to client. This will be used to identify the parent client-side and know what to attach to
Players can now be set to meshes using the following test script:
function switch_player_visual()
prop = {
mesh="player.obj",
texture="player.png",
visual="mesh",
}
for _, obj in pairs(minetest.get_connected_players()) do
obj:set_properties(prop)
end
minetest.after(1.0, switch_player_visual)
end
minetest.after(1.0, switch_player_visual)