public void AnimateInNewHeroSkin(Actor actor)
    {
        GameObject       gameObject = actor.gameObject;
        AnimatedHeroSkin skin       = new AnimatedHeroSkin {
            Actor            = actor,
            GameObject       = gameObject,
            OriginalScale    = gameObject.transform.localScale,
            OriginalPosition = gameObject.transform.position
        };

        this.m_animData = skin;
        gameObject.transform.position   = new Vector3(gameObject.transform.position.x, gameObject.transform.position.y + 0.5f, gameObject.transform.position.z);
        gameObject.transform.localScale = this.m_heroSkinContainer.transform.lossyScale;
        object[] args = new object[] {
            "from", 0f, "to", 1f, "time", 0.6f, "easetype", iTween.EaseType.easeOutCubic, "onupdate", "AnimateNewHeroSkinUpdate", "onupdatetarget", base.gameObject, "oncomplete", "AnimateNewHeroSkinFinished", "oncompleteparams", skin,
            "oncompletetarget", base.gameObject
        };
        Hashtable hashtable = iTween.Hash(args);

        iTween.ValueTo(gameObject, hashtable);
        CollectionHeroSkin component = actor.gameObject.GetComponent <CollectionHeroSkin>();

        if (component != null)
        {
            component.ShowSocketFX();
        }
    }
    private void AnimateNewHeroSkinFinished()
    {
        this.m_heroSkinObject.gameObject.SetActive(true);
        Actor baseActor = this.m_animData.Actor;

        this.UpdateHeroSkin(baseActor.GetEntityDef().GetCardId(), baseActor.GetCardFlair(), true, baseActor);
        UnityEngine.Object.Destroy(this.m_animData.GameObject);
        this.m_animData = null;
    }