Add parent_bone_name to animated bone properties

This commit is contained in:
Lars Mueller 2021-04-01 17:18:39 +02:00
parent 4095969890
commit 9a18150304

10
b3d.lua

@ -305,7 +305,7 @@ local binary_search_frame = modlib.table.binary_search_comparator(function(a, b)
return modlib.table.default_comparator(a, b.frame) return modlib.table.default_comparator(a, b.frame)
end) end)
--> list of { bonename = string, position = vector, rotation = quaternion, scale = vector } --> list of { bone_name = string, parent_bone_name = string, position = vector, rotation = quaternion, scale = vector }
function get_animated_bone_properties(self, keyframe, interpolate) function get_animated_bone_properties(self, keyframe, interpolate)
local function get_frame_values(keys) local function get_frame_values(keys)
local values = keys[keyframe] local values = keys[keyframe]
@ -334,8 +334,8 @@ function get_animated_bone_properties(self, keyframe, interpolate)
} }
end end
local bone_properties = {} local bone_properties = {}
local function get_props(node) local function get_props(node, parent_bone_name)
local properties = {} local properties = {parent_bone_name = parent_bone_name}
if node.keys and next(node.keys) ~= nil then if node.keys and next(node.keys) ~= nil then
properties = modlib.table.add_all(properties, get_frame_values(node.keys)) properties = modlib.table.add_all(properties, get_frame_values(node.keys))
end end
@ -343,11 +343,11 @@ function get_animated_bone_properties(self, keyframe, interpolate)
properties[property] = properties[property] or modlib.table.copy(node[property]) properties[property] = properties[property] or modlib.table.copy(node[property])
end end
if node.bone then if node.bone then
properties.bonename = node.name properties.bone_name = node.name
table.insert(bone_properties, properties) table.insert(bone_properties, properties)
end end
for _, child in pairs(node.children or {}) do for _, child in pairs(node.children or {}) do
get_props(child) get_props(child, properties.bone_name)
end end
end end
get_props(self.node) get_props(self.node)