private PlayerData GetPlayerStartingData(RoomData rd)
    {
        // Respawning from death? Return THAT data!
        if (dm.playerGroundedRespawnData != null)
        {
            return(dm.playerGroundedRespawnData);
        }
        // Otherwise...
        PlayerData pd = new PlayerData {
            pos  = rd.DefaultPlayerStartPos(),            // Default to PlayerStart pos.
            type = PlayerTypeHelper.LoadLastPlayedType(), // Default to last-played PlayerType.
        };

        // Trial?? FORCE it to this PlayerType.
        if (rd.MyCluster != null && rd.MyCluster.IsCharTrial)
        {
            pd.type = rd.MyCluster.TrialPlayerType;
        }
        // Starting at RoomDoor?
        if (!string.IsNullOrEmpty(dm.doorToID))
        {
            pd.pos = rd.GetRoomDoorPos(dm.doorToID);// + new Vector2(0, -playerHeight*0.5f);
        }
        // Return!
        return(pd);
    }