Example #1
0
    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);
        }
    }