forked from LeenkxTeam/LNXSDK
Consolidate and update
This commit is contained in:
@ -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) {
|
||||
|
||||
@ -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
|
||||
|
||||
Reference in New Issue
Block a user