//Open File private void OpenFile(string filename, bool testScene, int testSceneID) { Console.WriteLine("Importing " + filename); ThreadRequest req; //Pause renderer req = new ThreadRequest(); req.type = THREAD_REQUEST_TYPE.GL_PAUSE_RENDER_REQUEST; req.arguments.Clear(); //Send request glControl.issueRenderingRequest(ref req); glControl.waitForRenderingRequest(ref req); //Clear treeview Application.Current.Dispatcher.BeginInvoke((System.Action)(() => { SceneTreeView.Items.Clear(); })); RenderState.rootObject?.Dispose(); if (testScene) { glControl.addTestScene(testSceneID); } else { glControl.addScene(filename); } //Populate RenderState.rootObject.ID = itemCounter; Util.setStatus("Creating Treeview..."); //Add to UI Application.Current.Dispatcher.BeginInvoke((System.Action)(() => { SceneTreeView.Items.Add(RenderState.rootObject); })); Util.setStatus("Ready"); //Generate Request for resuming rendering ThreadRequest req2 = new ThreadRequest(); req2.type = THREAD_REQUEST_TYPE.GL_RESUME_RENDER_REQUEST; req2.arguments.Clear(); glControl.issueRenderingRequest(ref req2); //glControl.waitForRenderingRequest(ref req2); }
public static void sendRequest(ref ThreadRequest req) { //This function simply issues the request for handling from the active GL Control //It is the senders responsibility to handle and keep track of any results if necessary //Should be awesome for blind requests that have to activeControl?.issueRenderingRequest(ref req); }