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; }
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); }
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(); }
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)); }
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; }
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; }