public void RestoreAnimatorState(Animator animator, UMAData umaData) { if (animator.layerCount == stateHashes.Length) { for (int i = 0; i < animator.layerCount; i++) { animator.Play(stateHashes[i], i, stateTimes[i]); if (i < layerWeights.Count) { animator.SetLayerWeight(i, layerWeights[i]); } } } foreach (AnimatorControllerParameter param in parameters) { if (!animator.IsParameterControlledByCurve(param.nameHash)) { switch (param.type) { case AnimatorControllerParameterType.Bool: animator.SetBool(param.nameHash, param.defaultBool); break; case AnimatorControllerParameterType.Float: animator.SetFloat(param.nameHash, param.defaultFloat); break; case AnimatorControllerParameterType.Int: animator.SetInteger(param.nameHash, param.defaultInt); break; } } } umaData.FireAnimatorStateRestoredEvent(); if (animator.enabled == true) { animator.Update(Time.deltaTime); } else { animator.Update(0); } }
public void RestoreAnimatorState(Animator animator, UMAData umaData) { if (wasCopied == false) { return; } if (animator == false) { return; } if (animator.layerCount == stateHashes.Length) { for (int i = 0; i < animator.layerCount; i++) { animator.Play(stateHashes[i], i, stateTimes[i]); if (i < layerWeights.Count) { animator.SetLayerWeight(i, layerWeights[i]); } } } if (parameters != null) { foreach (AnimatorControllerParameter param in parameters) { if (!animator.IsParameterControlledByCurve(param.nameHash)) { switch (param.type) { case AnimatorControllerParameterType.Bool: animator.SetBool(param.nameHash, param.defaultBool); break; case AnimatorControllerParameterType.Float: animator.SetFloat(param.nameHash, param.defaultFloat); break; case AnimatorControllerParameterType.Int: animator.SetInteger(param.nameHash, param.defaultInt); break; } } } } if (!animator.gameObject.activeInHierarchy) { return; } umaData.FireAnimatorStateRestoredEvent(); if (animator.isInitialized) { #if UNITY_EDITOR if (FreezeTime || animator.enabled == false) { animator.Update(0); } else { animator.Update(Time.deltaTime); } #else if (animator.enabled == true) { animator.Update(Time.deltaTime); } else { animator.Update(0); } #endif } }