//----------------------------------------------------------------------------------- private void SampleAnimationDataSimulating(double eventTime, CRAnimationData animData) { float startTime = animData.timeStart_; float length = animData.timeLenght_; float endTime = startTime + length; if (eventTime >= startTime && (length == float.MaxValue || (eventTime <= endTime))) { animData.UpdateSimulating(animationBakingMesh_, (float)eventTime, (float)frameTime_); } }
public void UpdateSimulating(CRAnimationData animData, UnityEngine.Mesh animBakingMesh, float eventTime, float deltaTime) { animator_.Update(deltaTime); double targetTime = eventTime + deltaTime; for (int i = 0; i < arrSkinnedMeshRenderer_.Length; ++i) { uint idBody = arrIdBodySkinnedGameObjects_[i]; SkinnedMeshRenderer smRenderer = arrSkinnedMeshRenderer_[i]; GameObject gameObject = smRenderer.gameObject; smRenderer.BakeMesh(animBakingMesh); if (idBody != uint.MaxValue) { Matrix4x4 m_MODEL_TO_WORLD = gameObject.transform.localToWorldMatrix; RigidbodyManager.Rg_addEventTargetArrPos_WORLD((double)eventTime, targetTime, idBody, ref m_MODEL_TO_WORLD, animBakingMesh.vertices); } } for (int i = 0; i < arrNormalMeshRenderer_.Length; ++i) { uint idBody = arrIdBodyNormalGameObjects_[i]; MeshRenderer renderer = arrNormalMeshRenderer_[i]; GameObject gameObject = renderer.gameObject; if (idBody != uint.MaxValue) { Matrix4x4 m_MODEL_TO_WORLD = gameObject.transform.localToWorldMatrix; RigidbodyManager.Rg_addEventTargetPos_WORLD((double)eventTime, targetTime, idBody, ref m_MODEL_TO_WORLD, 0.01); } } animData.timeAnimated_ += deltaTime; }
//---------------------------------------------------------------------------------- public void AddAnimation(CNAnimatedbodyEditor animNodeEditor) { CRAnimationData animData = new CRAnimationData(animNodeEditor); listAnimationData_.Add(animData); }