// Construct the jointData array to transfer data between C# and C++ void ConstructJointDataArray() { m_jointDataArray = new FKIKPlugin.JointData[m_joints.Count]; for (int i = 0; i < m_joints.Count; ++i) { m_jointDataArray[i] = new FKIKPlugin.JointData(i); } }
// Set joints' localRotation and localPosition with JointData private void ApplyJointDataArray() { for (int i = 0; i < m_joints.Count; ++i) { FKIKPlugin.JointData data = m_jointDataArray[i]; GameObject joint = m_idJointMap[data.id]; joint.transform.localPosition = FKIKPlugin.BVHToUnityTranslation(data.localTranslation); joint.transform.localRotation = FKIKPlugin.BVHToUnityQuaternion(data.localRotation); } if (m_fixedRoot) { // Set root local position x and z to zero m_root.transform.localPosition = new Vector3(0, m_root.transform.localPosition.y, 0); } }