public void StartSmokeScreenTransition()
 {
     ClearSmokeObjects();
     currentSmokeScreenTransition         = Instantiate(smokeScreenScreenTransitionPrefab);
     currentSmokeScreenTransition.manager = this;
     currentSmokeScreenTransition.transform.SetParent(GetCurrentCanvas().transform, false);
     currentSmokeScreenTransition.StartTransition();
     // current smoke objects are sent here by the instantiated object
 }
    public void FinishSmokeScreenTransition()
    {
        SceneTransition_SmokeEffect boundingImage = Instantiate(smokeScreenScreenTransitionPrefab);

        boundingImage.transform.SetParent(GetCurrentCanvas().transform, false);
        // Recreate smoke cloud
        if (currentSmokeObjects.Count > 0)
        {
            foreach (SmokeObject smokeObject in currentSmokeObjects)
            {
                UIObjectAnimator newSmokeObject = Instantiate(boundingImage.smokePrefab, boundingImage.transform);
                RectTransform    rectTransform  = newSmokeObject.GetComponent <RectTransform>();
                rectTransform.sizeDelta     = smokeObject.size;
                rectTransform.localPosition = smokeObject.position;
                rectTransform.eulerAngles   = smokeObject.eulers;
                newSmokeObject.OnScreen();
                newSmokeObjects.Add(newSmokeObject);
            }
        }

        // Clear smoke cloud
        if (newSmokeObjects.Count > 0)
        {
            foreach (UIObjectAnimator smokeObject in newSmokeObjects)
            {
                BoxCollider2D boundingBox = boundingImage.GetComponent <BoxCollider2D>();
                if (boundingBox != null)
                {
                    Vector3 thisPos   = smokeObject.transform.position;
                    Vector3 targetPos = boundingBox.bounds.ClosestPoint(thisPos);
                    smokeObject.OffScreenToTargetPos(targetPos, 0.75f);
                }
            }
            //ClearSmokeObjects();
        }
    }