public PosNormalTexTanSkinned(Vector3 pos, Vector3 norm, Vector2 uv, Vector3 tan, float weight, byte[] boneIndices) { Pos = pos; Normal = norm; Tex = uv; Tan = new Vector4(tan, 0); Weight = weight; BoneIndices = new BonePalette(); for (int index = 0; index < boneIndices.Length; index++) { switch (index) { case 0: BoneIndices.B0 = boneIndices[index]; break; case 1: BoneIndices.B1 = boneIndices[index]; break; case 2: BoneIndices.B2 = boneIndices[index]; break; case 3: BoneIndices.B3 = boneIndices[index]; break; } } }
private void CompareBoneMap(BonePalette a, BonePalette b) { if (a == null || b == null) { Assert.IsTrue(a == null ? (b == null) : (b != null)); return; } Assert.AreEqual(a.BoneCount, b.BoneCount); if (a.InverseBindMatrices == null || b.InverseBindMatrices == null) { Assert.IsTrue(a.InverseBindMatrices == null ? (b.InverseBindMatrices == null) : (b.InverseBindMatrices != null)); return; } if (a.BoneToNodeIndices == null || b.BoneToNodeIndices == null) { Assert.IsTrue(a.BoneToNodeIndices == null ? (b.BoneToNodeIndices == null) : (b.BoneToNodeIndices != null)); return; } for (int i = 0; i < a.BoneCount; i++) { Assert.AreEqual(a.InverseBindMatrices[i], b.InverseBindMatrices[i]); Assert.AreEqual(a.BoneToNodeIndices[i], b.BoneToNodeIndices[i]); } }
private void WriteBonePalette(BonePalette bonePalette) { WriteInt(bonePalette.BoneCount); for (int i = 0; i < bonePalette.InverseBindMatrices.Length; i++) { WriteMatrix4x4(bonePalette.InverseBindMatrices[i]); } for (int i = 0; i < bonePalette.BoneToNodeIndices.Length; i++) { WriteUShort(bonePalette.BoneToNodeIndices[i]); } }