/// <summary>
        ///   トゥイーンを作成し、それを返す。メソッドチェーン記述用
        /// </summary>
        /// <example><code>
        ///   var tweener = new AltoTweener();
        ///   tweener.NewTween(someObj).FromTo(10f, 20f, 1.0f).OnUpdate(x => ...);
        /// </code></example>
        public IAltoTween NewTween(object obj = null)
        {
            var tween = new AltoTween();

            AddTween(obj, tween);
            return(tween);
        }
        /// <summary>
        ///   トゥイーンを登録する。obj は途中で止めたくなった時の対象指定用なので
        ///   その用途が無ければ null を渡してもよい
        /// </summary>
        public void Go(
            object obj, float from, float to, float duration,
            AltoEasingFunc easingFunc,
            AltoTweenCallback onUpdate
            )
        {
            var tween = new AltoTween(from, to, duration, easingFunc, onUpdate);

            tween.Init();
            AddTween(obj, tween);
        }
 public void Add(AltoTween tween)
 {
     if (_isUpdating)
     {
         this.pendingTweens.Add(tween);
     }
     else
     {
         this.tweens.Add(tween);
     }
     this.isCompleted = false;
 }
        void AddTween(object obj, AltoTween tween)
        {
            AltoTweenList tweenList;
            object        dictKey = (obj != null) ? obj : _nullObject;

            if (_tweens.TryGetValue(dictKey, out tweenList))
            {
                tweenList.Add(tween);
                return;
            }

            tweenList = new AltoTweenList();
            tweenList.Add(tween);
            _tweens.Add(dictKey, tweenList);
        }