/// <summary> /// Called by Unity. Triggers <see langword="this"/> to update. /// </summary> private void Update() { #if UNITY_2018_1_OR_NEWER if (!WasAttachedModelUpdateFunction) { _modelUpdateFunctions += OnModelUpdate; WasAttachedModelUpdateFunction = true; } #endif // Return on first frame enabled. if (WasJustEnabled) { return; } // Return unless revived. if (!IsRevived) { return; } // Return if backend is ticking. if (!TaskableModel.DidExecute) { return; } // Sync parameters back. TaskableModel.TryReadParameters(Parameters); // restore last frame parameters value and parts opacity. if (_parameterStore != null) { _parameterStore.RestoreParameters(); } // Trigger event. if (OnDynamicDrawableData == null) { return; } OnDynamicDrawableData(this, TaskableModel.DynamicDrawableData); }
/// <summary> /// Called by Unity. Triggers <see langword="this"/> to update. /// </summary> private void Update() { // Return on first frame enabled. if (WasJustEnabled) { return; } // Return unless revived. if (!IsRevived) { return; } // Return if backend is ticking. if (!TaskableModel.DidExecute) { return; } // Sync parameters back. TaskableModel.TryReadParameters(Parameters); // restore last frame parameters value and parts opacity. if (_parameterStore != null) { _parameterStore.RestoreParameters(); } // Trigger event. if (OnDynamicDrawableData == null) { return; } Profiler.BeginSample("OnDynamicDrawableData"); OnDynamicDrawableData(this, TaskableModel.DynamicDrawableData); Profiler.EndSample(); }
/// <summary> /// Called by cubism update controller. Updates controller. /// </summary> /// <remarks> /// Make sure this method is called after any animations are evaluated. /// </remarks> public void OnLateUpdate() { // Fail silently. if (!enabled || _fadeStates == null || _parameterStore == null || DestinationParameters == null || DestinationParts == null) { return; } var time = Time.time; for (var i = 0; i < _fadeStates.Length; ++i) { _isFading[i] = false; var playingMotions = _fadeStates[i].GetPlayingMotions(); if (playingMotions == null || playingMotions.Count <= 1) { continue; } var latestPlayingMotion = playingMotions[playingMotions.Count - 1]; var playingMotionData = latestPlayingMotion.Motion; var elapsedTime = time - latestPlayingMotion.StartTime; for (var j = 0; j < playingMotionData.ParameterFadeInTimes.Length; j++) { if ((elapsedTime <= playingMotionData.FadeInTime) || ((0 <= playingMotionData.ParameterFadeInTimes[j]) && (elapsedTime <= playingMotionData.ParameterFadeInTimes[j]))) { _isFading[i] = true; break; } } } var isFadingAllFinished = true; for (var i = 0; i < _fadeStates.Length; ++i) { var playingMotions = _fadeStates[i].GetPlayingMotions(); var playingMotionCount = playingMotions.Count - 1; if (_isFading[i]) { isFadingAllFinished = false; continue; } for (var j = playingMotionCount; j >= 0; --j) { if (playingMotions.Count <= 1) { break; } var playingMotion = playingMotions[j]; if (time <= playingMotion.EndTime) { continue; } // If fade-in has been completed, delete the motion that has been played back. _fadeStates[i].StopAnimation(j); } } if (isFadingAllFinished) { return; } _parameterStore.RestoreParameters(); // Update sources and destinations. for (var i = 0; i < _fadeStates.Length; ++i) { if (!_isFading[i]) { continue; } UpdateFade(_fadeStates[i]); } }