Beispiel #1
0
            public void UpdateSpriteFrame(float time)
            {
                if (!_playing || !_activated || time < _nextUpdateTime)
                {
                    return;
                }
                _currentFrameIndex++;
                var cf = CurrentFrame;

                if (cf != null)
                {
                    StartNewTime(_animation.FrameTime * cf.Length, time);
                    _renderer.sprite = _animation.GetSpriteFrame(FrameIndex);
                    return;
                }
                if (!_animation.IsComplete(_currentFrameIndex))
                {
                    return;
                }
                if (_animation.Looping)
                {
                    _currentFrameIndex = 0;
                    StartNewTime(_animation.FrameTime * cf.Length, time);
                    _renderer.sprite = _animation.GetSpriteFrame(FrameIndex);
                    return;
                }
                _playing = false;
            }
Beispiel #2
0
        public void OnCreate(PrefabEntity entity)
        {
            MaterialPropertyBlock materialBlock = new MaterialPropertyBlock();

            _renderer.GetPropertyBlock(materialBlock);
            _renderer.sprite = _animation.GetSpriteFrame(0);
            materialBlock.SetTexture("_BumpMap", _animation.NormalMap);
            materialBlock.SetTexture("_MainTex", _renderer.sprite.texture);
            _renderer.SetPropertyBlock(materialBlock);
        }
Beispiel #3
0
 public void Play(SpriteAnimation anim)
 {
     if (_state != State.None)
     {
         if (!_animationQueue.Contains(anim))
         {
             _animationQueue.Enqueue(anim);
         }
         return;
     }
     if (_currentAnim == anim && !Finished)
     {
         return;
     }
     _currentAnim     = anim;
     _renderer.sprite = _currentAnim.GetSpriteFrame(0);
     if (_currentAnim.NormalMap != null)
     {
         _materialBlock.SetTexture("_BumpMap", _currentAnim.NormalMap);
     }
     _materialBlock.SetTexture("_MainTex", _renderer.sprite.texture);
     _renderer.SetPropertyBlock(_materialBlock);
     _currentFrameIndex    = 0;
     _eventFrame           = null;
     DefaultEventTriggered = Finished = false;
     _state = State.Playing;
     UpdateSpriteFrame();
 }
Beispiel #4
0
        private void UpdateSpriteFrame()
        {
            var sprite = _currentAnim != null?_currentAnim.GetSpriteFrame(_currentFrameIndex) : null;

            if (sprite == null)
            {
                return;
            }
            _renderer.sprite = sprite;
        }
 public void PlayAnimation(SpriteParticle particle)
 {
     Animation         = particle.Animation;
     CurrentFrameIndex = 0;
     NextUpdateTime    = Animation.FrameTime * CurrentFrame.Length + TimeManager.Time;
     _matBlock.SetColor("_TintColor", Color.white * particle.Glow);
     Renderer.SetPropertyBlock(_matBlock);
     Renderer.color           = particle.Color;
     Renderer.sprite          = Animation.GetSpriteFrame(CurrentFrameIndex);
     Renderer.gameObject.name = particle.Animation.name;
 }
 private Sprite GetCurrentSprite()
 {
     if (_nextFrameTime < _currentTime)
     {
         _frame++;
         if (_frame >= _animation.LengthFrames)
         {
             _frame = 0;
         }
         _nextFrameTime = _currentTime + (_animation.FrameTime * _animation.GetFrame(_frame).Length);
     }
     return(_animation.GetSpriteFrame(_frame));
 }
Beispiel #7
0
 public void Setup(SpriteRenderer renderer, SpriteAnimation animation, bool unscaled, float time)
 {
     _renderer  = renderer;
     _animation = animation;
     _unscaled  = unscaled;
     //_renderer.GetPropertyBlock(_materialBlock);
     _renderer.sprite = _animation.GetSpriteFrame(0);
     //if (_animation.NormalMap != null) {
     //    _materialBlock.SetTexture("_BumpMap", _animation.NormalMap);
     //}
     //_materialBlock.SetTexture("_MainTex", _renderer.sprite.texture);
     //_renderer.SetPropertyBlock(_materialBlock);
     _currentFrameIndex = 0;
     _playing           = true;
     _activated         = true;
     StartNewTime(_animation.FrameTime * CurrentFrame.Length, time);
     _animationStarted = time;
 }
Beispiel #8
0
        private void OnClipChange(bool resetPreview = true)
        {
            if (_clip == null)
            {
                return;
            }
            _frames = new List <AnimFrame>();
            float time = 0;

            for (int i = 0; i < _clip.Frames.Length; i++)
            {
                _frames.Add(new AnimFrame()
                {
                    Sprite          = _clip.GetSpriteFrame(i),
                    Event           = _clip.Frames[i].Event,
                    LengthMulti     = _clip.Frames[i].Length,
                    RealLength      = MathEx.Max(GetFrameTime(), SnapTimeToFrameRate(_clip.Frames[i].Length)),
                    EventName       = _clip.Frames[i].EventName,
                    EventPosition   = _clip.Frames[i].EventPosition,
                    EventDataFloat  = _clip.Frames[i].EventDataFloat,
                    EventDataString = _clip.Frames[i].EventDataString,
                    EventDataObject = _clip.Frames[i].EventDataObject,
                });
                _frames.LastElement().Time = time;
                time += _clip.FrameTime * _frames.LastElement().RealLength;
            }
            RecalcFrameLengths();

            _framesReorderableList.list = _frames;
            if (resetPreview)
            {
                _previewResetScale = true;
                //_previewloop = _clip.Looping;
                _animTime       = 0;
                _playing        = _autoPlay;
                _scrollPosition = Vector2.zero;
                //_selectedEvents.Clear();
                _selectedFrames.Clear();
                _previewOffset  = Vector2.zero;
                _timelineOffset = -TIMELINE_OFFSET_MIN;
            }
            Repaint();
        }
        public SpriteAnimationPreview(SpriteAnimation animation)
        {
            _animation = animation;
            var type = Assembly.Load("UnityEditor.dll").GetType("UnityEditor.SpriteInspector");

            for (int i = 0; i < animation.Frames.Length; i++)
            {
                var sprite = animation.GetSpriteFrame(i);
                if (sprite == null)
                {
                    continue;
                }
                Editor editor = null;
                Editor.CreateCachedEditor(sprite, type, ref editor);
                if (editor != null)
                {
                    _spriteEditors.Add(editor);
                }
            }
            Speed = 1;
            EditorApplication.update += Update;
        }