protected abstract void Setup(float[] a_predictionTimes); //Setup function to be implemented for any custom logic based on the prediction times. It is called at the end of SetGoalRequirements. //=========================================================================================== /** * @brief Monobehaviour Awake function called once when the game object is created and before * Start. This implementation ensure the trajectory generator has a reference to all necessary * components. * *********************************************************************************************/ protected virtual void Awake() { p_mxmAnimator = GetComponentInChildren <MxMAnimator>(); Assert.IsNotNull(p_mxmAnimator, "Cannot initialize MxMTrajectoryGeneratorBase with null MxMAnimator" + "Add an MxMAnimator component"); p_animator = p_mxmAnimator.GetComponent <Animator>(); }
private void Start() { m_maxDecouple = Mathf.Clamp(Mathf.Abs(m_maxDecouple), 0f, float.MaxValue); m_controllerWrapper = GetComponent<GenericControllerWrapper>(); m_mxmAnimator = GetComponentInChildren<MxMAnimator>(); if(m_mxmAnimator != null) { m_modelTransform = m_mxmAnimator.transform; m_animator = m_mxmAnimator.GetComponent<Animator>(); } else { Debug.LogError("MxMAnimationDecoupler: Cannot find child component with MxMAnimator attached. Decoupler disabled"); enabled = false; } Animator animator = GetComponentInChildren<Animator>(); if(animator != null) { if (animator.updateMode == AnimatorUpdateMode.AnimatePhysics) m_fixedUpdate = true; else m_fixedUpdate = false; } else { Debug.LogError("MxMAnimationDecoupler: Cannot find child component with Animator attached. Decoupler disabled"); enabled = false; } m_modelPos = m_modelTransform.position; m_modelRot = m_modelTransform.rotation; }