예제 #1
0
 internal Sprite(SpriteData Data)
 {
     this.Data = Data;
     CurrentAction = null;
     if(Data.Actions.Count > 0) {
     IEnumerator<KeyValuePair<string, SpriteData.Action>> enumerator = Data.Actions.GetEnumerator();
     enumerator.MoveNext();
     CurrentAction = enumerator.Current.Value;
     }
 }
예제 #2
0
 internal Sprite(SpriteData Data)
 {
     this.Data     = Data;
     CurrentAction = null;
     if (Data.Actions.ContainsKey("default"))
     {
         CurrentAction = Data.Actions["default"];
     }
     else if (Data.Actions.Count > 0)
     {
         IEnumerator <KeyValuePair <string, SpriteData.Action> > enumerator = Data.Actions.GetEnumerator();
         enumerator.MoveNext();
         CurrentAction = enumerator.Current.Value;
     }
 }
예제 #3
0
        public virtual void Draw(Vector pos)
        {
            if (CurrentAction == null || CurrentAction.Frames.Count == 0)
            {
                return;
            }

            float AnimationTime = (Timer.CurrentTime - ActionTimeOffset) * CurrentAction.Speed;

            if (_NextAction != null && AnimationTime > (float)CurrentAction.Frames.Count)
            {
                AnimationTime -= CurrentAction.Frames.Count;
                AnimationTime /= CurrentAction.Speed;
                CurrentAction  = _NextAction;
                _NextAction    = null;
                AnimationTime *= CurrentAction.Speed;
            }
            int     AnimationFrame = ((int)AnimationTime) % CurrentAction.Frames.Count;
            Surface Surface        = CurrentAction.Frames[AnimationFrame];

            Surface.Draw(pos - CurrentAction.Offset);
        }
예제 #4
0
        public virtual void Draw(Vector pos)
        {
            if(CurrentAction == null || CurrentAction.Frames.Count == 0)
            return;

            float AnimationTime = (Timer.CurrentTime - ActionTimeOffset) * CurrentAction.Speed;
            if(_NextAction != null && AnimationTime > (float) CurrentAction.Frames.Count) {
            AnimationTime -= CurrentAction.Frames.Count;
            AnimationTime /= CurrentAction.Speed;
            CurrentAction = _NextAction;
            _NextAction = null;
            AnimationTime *= CurrentAction.Speed;
            }
            int AnimationFrame = ((int) AnimationTime) % CurrentAction.Frames.Count;
            Surface Surface = CurrentAction.Frames[AnimationFrame];
            Surface.Draw(pos - CurrentAction.Offset);
        }