public static void StartSelectedDemo()
        {
            // first unit is filename
            GuiTextListCtrl RecordingsDlgList = "RecordingsDlgList";
            int sel = RecordingsDlgList.getSelectedId();
            string rowText = RecordingsDlgList.getRowTextById(sel);

            string file = omni.sGlobal["$currentMod"] + "/recordings/" + omni.Util.getField(rowText, 0) + ".rec";

            GameConnection ServerConnection = new ObjectCreator("GameConnection", "ServerConnection").Create();
            ((SimGroup) "RootGroup").add(ServerConnection);

            // Start up important client-side stuff, such as the group
            // for particle emitters.  This doesn't get launched during a demo
            // as we short circuit the whole mission loading sequence.
            mission.clientStartMission();

            if (ServerConnection.playDemo(file))
                {
                ((GuiCanvas) "canvas").setContent("PlayGui");
                ((GuiCanvas) "canvas").popDialog("RecordingsDlg");
                ServerConnection.call("prepDemoPlayback");
                }
            else
                {
                messageBox.MessageBoxOK("Playback Failed", "Demo playback failed for file '" + file + "'.", "");
                if ("ServerConnection".isObject())
                    "ServerConnection".delete();
                }
        }