コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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();
        }
コード例 #3
0
        /// <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]);
            }
        }