Consolidate and update

This commit is contained in:
2026-10-27 15:58:22 -07:00
parent eb211da457
commit 6c13722fc6
42 changed files with 498 additions and 169 deletions

View File

@ -58,6 +58,7 @@ class Geometry {
// Skinned
#if lnx_skin
public var skeletonTransformsI: Array<Mat4> = null;
public var skeletonBoneRefs: Array<String> = null;
public var actions: Map<String, Array<iron.data.SceneFormat.TObj>> = new Map();
public var mats: Map<String, Array<Mat4>> = new Map();
#end
@ -326,6 +327,33 @@ class Geometry {
// Skinned
#if lnx_skin
public function addArmature(armature: iron.data.Armature) {
for (a in armature.actions) {
addAction(a.bones, a.name);
}
}
public function addAction(bones: Array<TObj>, name: String) {
if (bones == null || skeletonBoneRefs == null) return;
if (actions.get(name) != null) return;
var actionBones: Array<TObj> = [];
for (s in skeletonBoneRefs) {
for (b in bones) {
if (b.name == s) {
actionBones.push(b);
}
}
}
actions.set(name, actionBones);
var actionMats: Array<Mat4> = [];
for (b in actionBones) {
actionMats.push(Mat4.fromFloat32Array(b.transform.values));
}
mats.set(name, actionMats);
}
public function initSkeletonTransforms(transformsI: Array<Float32Array>) {
skeletonTransformsI = [];
for (t in transformsI) {

View File

@ -108,6 +108,7 @@ class MeshData {
// Skinned
#if lnx_skin
if (raw.skin != null) {
dat.geom.skeletonBoneRefs = raw.skin.bone_ref_array;
dat.geom.initSkeletonTransforms(raw.skin.transformsI);
}
#end