public void InitializeICP() { GameObject modelFragment, staticFragment; GetModelAndStaticFragment(out modelFragment, out staticFragment); Settings settings = Settings.Horn(ICPFragments.transform); registerer = new ICPRegisterer( modelFragment: modelFragment, staticFragment: staticFragment, settings: settings ); Ticker.Receiver.Instance.SendMessage( methodName: "OnMessage", value: new Ticker.Message.InfoMessage("Using " + settings.name + " to determine the registration."), options: SendMessageOptions.RequireReceiver ); //Note these objects do not receive the ICPStarted message. registerer.AddListener(ICPFragments); registerer.AddListener(this.gameObject); StepButton.Registerer = registerer; PlayButton.Registerer = registerer; StopButton.Registerer = registerer; ToggleICPModeInGUI(true); }
private IEnumerator <object> ExecuteRunGUI(Run run) { currentRunNumber++; isCurrentRunFinished = false; string message = string.Format("Starting run number {0} with fragment {1}.", currentRunNumber, run.id); //Notify the user via the ticker and via the debug log Ticker.Receiver.Instance.SendMessage( methodName: "OnMessage", value: new Ticker.Message.InfoMessage(message) ); yield return(null); // Load ModelFragment GameObject modelFragment = fragmentImporter.Import(run.modelFragmentPath, prefabPath: ExperimentRunner.ExperimentFragmentPrefabPath); yield return(null); // Run ICP ICPRegisterer icp = new ICPRegisterer(staticFragment, modelFragment, run.ICPSettings); icp.AddListener(this.listener); while (!icp.HasTerminated) { icp.PrepareStep(); yield return(null); icp.Step(); yield return(null); } // Export Current Position of the ModelFragment fragmentExporter.Export(modelFragment, run.GetOutputPath(this.outputDirectory)); yield return(null); // Delete the ModelFragment modelFragment.GetComponent <FragmentDestroyer>().DestroyFragment(); isCurrentRunFinished = true; }