void StartImp() { if (ImpType == ImpTypeEnum.ILamp) { ImpPlugin.Imp_Create_ILamp(); ImpPlugin.Imp_ILamp_Setup(ILampParams.KdTreeCount, ILampParams.NumNeighbours, ILampParams.KnnSearchChecks); } else { ImpPlugin.Imp_Create_Rbp(); ImpPlugin.Imp_Rbf_Setup((ushort)(RbfParams.Function), RbfParams.Constant); } System.Globalization.CultureInfo customCulture = (System.Globalization.CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone(); customCulture.NumberFormat.NumberDecimalSeparator = "."; System.Threading.Thread.CurrentThread.CurrentCulture = customCulture; if (!ImpPlugin.Imp_ExecutePcaImages(FileNameImageList, FileNameNd)) { Debug.LogError("Could not execute pca for images: " + FileNameImageList); enabled = false; return; } if (!ImpPlugin.Imp_ExecuteLamp(FileNameNd, FileName2d)) { Debug.LogError("Could not run lamp for " + FileNameNd + ' ' + FileName2d); enabled = false; return; } if (!ImpPlugin.Imp_LoadInputFiles(FileName2d, FileNameNd)) { Debug.LogError("Could not load input files: " + FileName2d + ' ' + FileNameNd); enabled = false; return; } if (!ImpPlugin.Imp_Build()) { Debug.LogError("Could not build imp"); enabled = false; return; } using (System.IO.TextReader reader = System.IO.File.OpenText(FileName2d)) { string line; while ((line = reader.ReadLine()) != null) { string[] v_str = line.Split(); float x, y = 0; if (float.TryParse(v_str[0], out x) && float.TryParse(v_str[1], out y)) { vertices2d.Add(new Vector2(x, y)); } } reader.Close(); } if (ImpPlugin.Imp_Execute(vertices2d[0].x, vertices2d[0].y)) { if (q_data == null) // q_data.Count must be (3 * vertices.Length) { q_data = new float[ImpPlugin.Imp_QRows() * ImpPlugin.Imp_QCols()]; q_handle = GCHandle.Alloc(q_data, GCHandleType.Pinned); } } else { Debug.LogError("Could not run imp"); enabled = false; return; } impUI = (ImpUI)FindObjectOfType(typeof(ImpUI)); if (impUI) { impUI.Setup(vertices2d, MinCoords, MaxCoords); } }