public IEnumerator TransitionToScene_coroutine(SceneChangeTrigger2D trigger)
    {
        var player = GameObject.FindGameObjectWithTag("Player");
        var objs = Object2DLoader.LoadAll(trigger.Scene);
        var target = (from o in objs
                      where o.Guid == trigger.Target
                      select o)
                     .FirstOrDefault();

        //disable character controls
        player.GetComponent<Rigidbody2D>().velocity = Vector2.zero;
        player.GetComponent<PlayerMovement2D>().enabled = false;
        player.GetComponent<Collider2D>().enabled = false;

        //start fade out
        BlackScreenUI.GetInstance().Initialize(0.5f,0.1f,0.5f);

        //move player into door
        for (float t = 0; t < 1f; t+=Time.deltaTime*2)
        {
            player.transform.position += Vector3.up * Time.deltaTime;
            yield return null;
        }
        player.GetComponent<Collider2D>().enabled = true;
        if (target != null)
        {
            player.transform.position = (Vector2)target.Position;
            //player.
        }

        //start blackout
        GameLevel2DSceneResourceManager.LoadLevel(GameLevel2D.GetGameLevel(trigger.Scene));
        player.GetComponent<PlayerMovement2D>().enabled = true;
        player.GetComponent<Collider2D>().enabled = true;
    }
 void SelectTarget(SceneChangeTrigger2D obj, List<Object2D> objects, int selected)
 {
     obj.Target = objects[selected].Guid;
     Save();
 }
 void SelectScene(SceneChangeTrigger2D obj, GameLevel2D[] levels, int selected)
 {
     obj.Scene = levels[selected].levelname;
     Save();
 }
 public void TransitionToScene(SceneChangeTrigger2D trigger)
 {
     StartCoroutine(TransitionToScene_coroutine(trigger));
 }