protected virtual IMyRenderWindow InitializeRenderThread() { Debug.Assert(MyPerGameSettings.GameIcon != null, "Set the game icon file in executable project."); DrawThread = Thread.CurrentThread; var form = new MySandboxForm(); WindowHandle = form.Handle; m_bufferedInputSource = form; m_windowCreatedEvent.Set(); form.Text = MyPerGameSettings.GameName; try { form.Icon = new System.Drawing.Icon(Path.Combine(MyFileSystem.ExePath, MyPerGameSettings.GameIcon)); } catch (System.IO.FileNotFoundException e) { form.Icon = null; } form.FormClosed += (o, e) => ExitThreadSafe(); Action showCursor = () => { if (!form.IsDisposed) form.ShowCursor = true; }; Action hideCursor = () => { if (!form.IsDisposed) form.ShowCursor = false; }; m_setMouseVisible = (b) => { // In case of crash, this may be null, don't want subsequent crash var component = GameRenderComponent; if (component != null) { var renderThread = component.RenderThread; if (renderThread != null) { renderThread.Invoke(b ? showCursor : hideCursor); } } }; return form; }
protected virtual IMyRenderWindow InitializeRenderThread() { Debug.Assert(MyPerGameSettings.GameIcon != null, "Set the game icon file in executable project."); DrawThread = Thread.CurrentThread; #if XB1 var form = new XB1Interface.XB1GameWindow(); #else var form = new MySandboxForm(); WindowHandle = form.Handle; #endif m_bufferedInputSource = form; m_windowCreatedEvent.Set(); #if !XB1 form.Text = MyPerGameSettings.GameName; try { form.Icon = new System.Drawing.Icon(Path.Combine(MyFileSystem.ExePath, MyPerGameSettings.GameIcon)); } catch (System.IO.FileNotFoundException) { form.Icon = null; } #endif // !XB1 form.FormClosed += (o, e) => ExitThreadSafe(); #if !XB1 Action showCursor = () => { if (!form.IsDisposed) form.ShowCursor = true; }; Action hideCursor = () => { if (!form.IsDisposed) form.ShowCursor = false; }; m_setMouseVisible = (b) => { // In case of crash, this may be null, don't want subsequent crash var component = GameRenderComponent; if (component != null) { var renderThread = component.RenderThread; if (renderThread != null) { renderThread.Invoke(b ? showCursor : hideCursor); } } }; if (MySandboxGame.Config.SyncRendering) { VRageRender.MyViewport vp = new MyViewport(0, 0, (float)MySandboxGame.Config.ScreenWidth, (float)MySandboxGame.Config.ScreenHeight); RenderThread_SizeChanged((int)vp.Width, (int)vp.Height, vp); } #endif // !XB1 return form; }