Beispiel #1
0
        private void BuildBonePositions(MeshAnimationData pData)
        {
            m_bonePositions = new Dictionary <string, Vector3[]>();
            m_boneRotations = new Dictionary <string, Quaternion[]>();

            if (pData.BoneCount <= 0)
            {
                return;
            }

            for (int i = 0; i < FrameCount; i++)
            {
                Vector3[]    positions = pData.GetFrameBonePositions(i);
                Quaternion[] rotations = pData.GetFrameBoneRotations(i);

                for (int j = 0; j < pData.BoneCount; j++)
                {
                    string key = pData.BoneNames[j];

                    if (!m_bonePositions.ContainsKey(key))
                    {
                        m_bonePositions[key] = new Vector3[FrameCount];
                    }

                    m_bonePositions[key][i] = positions[j];

                    if (!m_boneRotations.ContainsKey(key))
                    {
                        m_boneRotations[key] = new Quaternion[FrameCount];
                    }

                    m_boneRotations[key][i] = rotations[j];
                }
            }
        }