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];
                }
            }
        }
Beispiel #2
0
		//ncrunch: no coverage start
		protected override void LoadData(Stream fileData)
		{
			// Outstanding feature, see case 11039
			//LoadData(new BinaryReader(fileData).Create() as MeshAnimationData);
			var loadedAnimationData = new MeshAnimationData();
			loadedAnimationData.LoadData(new BinaryReader(fileData));
			LoadData(loadedAnimationData);
		}
        public MeshAnimationData GetAnimationData()
        {
            if (m_animationData == null)
            {
                m_animationData = new MeshAnimationData(m_scene);
            }

            return(m_animationData);
        }
Beispiel #4
0
        //ncrunch: no coverage start
        protected override void LoadData(Stream fileData)
        {
            // Outstanding feature, see case 11039
            //LoadData(new BinaryReader(fileData).Create() as MeshAnimationData);
            var loadedAnimationData = new MeshAnimationData();

            loadedAnimationData.LoadData(new BinaryReader(fileData));
            LoadData(loadedAnimationData);
        }
Beispiel #5
0
        /// <summary>
        /// Initializes a new instance of the <see cref="MeshAnimation"/> class.
        /// </summary>
        /// <param name="pUv">Mesh UV</param>
        /// <param name="pTriangles">Mesh Triangles</param>
        /// <param name="pData">Mesh animation data</param>
        public MeshAnimation(Vector2[] pUv, int[] pTriangles, MeshAnimationData pData)
        {
            FrameCount         = pData.FrameCount;
            Name               = pData.Name;
            m_isGenerateNormal = pData.GenerateNormal;
            BoneNames          = pData.BoneNames;

            m_uv        = pUv;
            m_triangles = pTriangles;
            m_data      = pData;

            m_hasInitFrame = false;
        }
        public override List <AnimationSequence> AllocateMemory(string arg)
        {
            List <AnimationSequence> resultAnimationCollection = null;

            using (AssimpModelLoader loader = new AssimpModelLoader(arg, CParser.Assimp.Strategy.SkeletonPerVertexBoneInfluenceType.ThreeBones))
            {
                if (loader.GetHasAnimationData())
                {
                    MeshAnimationData animationData = loader.GetAnimationData();
                    if (animationData != null)
                    {
                        resultAnimationCollection = AssimpConverter.Converter.ConvertAssimpAnimationToEngineAnimation(animationData.Animations);
                    }
                }
            }

            return(resultAnimationCollection);
        }
Beispiel #7
0
        public void Destory()
        {
            if (m_frames != null)
            {
                for (int i = 0; i < m_frames.Length; i++)
                {
                    Object.DestroyImmediate(m_frames[i], true);
                }

                m_frames = null;
            }

            m_bonePositions = null;
            m_boneRotations = null;
            m_uv            = null;
            m_data          = null;
            m_triangles     = null;
        }
Beispiel #8
0
        /// <summary>
        /// Construct the mesh frames from mesh animation data.
        /// </summary>
        public void BuildFrames()
        {
            m_frames = new Mesh[FrameCount];

            for (int i = 0; i < FrameCount; i++)
            {
                Mesh mesh = new Mesh();
                mesh.name      = "SkinMesh";
                mesh.vertices  = m_data.GetFrameVertices(i);
                mesh.uv        = m_uv;
                mesh.triangles = m_triangles;
                if (m_isGenerateNormal)
                {
                    mesh.RecalculateNormals();
                }

                m_frames[i] = mesh;
            }

            m_uv           = null;
            m_triangles    = null;
            m_data         = null;
            m_hasInitFrame = true;
        }
Beispiel #9
0
		//ncrunch: no coverage end

		public void LoadData(MeshAnimationData animationData)
		{
			FramesPerSecond = animationData.FramesPerSecond;
			Frames = animationData.FramesData;
		}
Beispiel #10
0
        //ncrunch: no coverage end

        public void LoadData(MeshAnimationData animationData)
        {
            FramesPerSecond = animationData.FramesPerSecond;
            Frames          = animationData.FramesData;
        }