public void SelectPlot(double value)
        {
            var nextIndex = PlotGroup.GetIndexOfClosestPlot(value);

            if (selectedPlotIndex != nextIndex)
            {
                selectedPlotIndex = nextIndex;
                UpdatePlot();
            }
        }
Beispiel #2
0
    void Update()
    {
        Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;
        Collider   plotableArea = GameObject.Find("PlotArea").GetComponent <Collider>();

        if (Physics.Raycast(ray, out hit))
        {
            if (plotableArea.bounds.Contains(hit.point) && hit.transform.gameObject.tag == "valid")
            {
                if (hit.transform.gameObject.name == "Adjacent")
                {
                    GameObject adj         = hit.transform.gameObject;
                    int        groupID     = adj.transform.GetComponentInParent <Plot>().groupID;
                    string     orientation = adj.transform.GetComponent <AdjacentPlot>().position;
                    GameObject parent      = adj.transform.parent.gameObject;

                    pointer.transform.position = hit.transform.gameObject.transform.position;

                    // add tile to plot group
                    if (Input.GetMouseButtonDown(0))
                    {
                        GameObject newPlot = Instantiate(plot);
                        newPlot.transform.position = pointer.transform.position;

                        AddPlotToGroup(groupID, newPlot, parent, orientation);
                    }
                }
                else
                {
                    pointer.SetActive(true);
                    pointer.transform.position = hit.point;

                    // create new plot group
                    if (Input.GetMouseButtonDown(0))
                    {
                        Debug.Log("yup");
                        PlotGroup  pg      = CreatePlotGroup(pointer.transform.position);
                        GameObject newPlot = Instantiate(plot);
                        newPlot.transform.position = pointer.transform.position;
                        pg.Initialize(newPlot);
                        plotGroups.Add(pg);
                    }
                }
            }
            else
            {
                pointer.SetActive(false);
            }
        }
    }
Beispiel #3
0
        public void TestSequence_Thread(SrbThread.dIsThreadStoping IsStoping)
        {
            pd = new PerformanceDetector(10);
            bgd.setPd(pd);
            int lose_times = 0;

            if (pg_last != null)
            {
                chart.remove(pg_last.Plots[0]);
                chart.remove(pg_last.Plots[1]);
            }
            if (pg != null)
            {
                pg_last = pg;
                pg_last.Plots[0].Color = System.Drawing.Color.FromArgb(64, pg_last.Plots[0].Color);
                pg_last.Plots[1].Color = System.Drawing.Color.FromArgb(64, pg_last.Plots[1].Color);
            }
            pg = new PlotGroup(3);
            pg.Plots[0].Color   = System.Drawing.Color.ForestGreen;
            pg.Plots[1].Color   = System.Drawing.Color.Violet;
            chart.Forcu_on_plot = pg.Plots[0];
            chart.add(pg.Plots[0]);
            chart.add(pg.Plots[1]);


            if (target_speed_table == null)
            {
                target_speed_table = initSpeedArray();
            }
            Stopwatch sw = new Stopwatch();

            float time = 0f;

            sw.Restart();
            object motion = null;

            double[] temp = new double[3];
            while (time < target_speed_table.Max_time)
            {
                pd.beginCheck();

                bgd.target_speed = target_speed_table.speed(time, ref motion);

                pd.checkPoint(1);
                bgd.addDataAccess_pd(1, true);
                pd.checkPoint(5);
                temp[0] = bgd.target_speed;
                temp[1] = bgd.sensor_speed;
                temp[2] = bgd.odometer;
                pg.append(time, temp);
                pd.checkPoint(6);
                bool check(long[] ticks)
                {
                    return(((ticks[6] - ticks[0]).tickToMs()) > 2);
                }

                pd.endCheckPoint(check);

                if (IsStoping())
                {
                    break;
                }
                while (sw.getElapsedMs() - time < period_in_ms)
                {
                    ;
                }
                time = sw.getElapsedMs();
            }
            string lose_sync_report = "";

            pd.initPage();
            do
            {
                lose_sync_report += $"T={(pd[6] - pd[0]).tickToMs():f2}, Send = {pd[3] - pd[2]}, recv = {pd[4] - pd[3]},";
                lose_sync_report += $"a1={pd[2] - pd[1]}, a2 = {pd[5] - pd[4]} ";
                lose_sync_report += $"access-(send+recv)={pd[5] - pd[1]-(pd[4] - pd[2])}\n\n";
            }while (pd.nextPage());



            this.lose_sync_report = lose_sync_report;
            if (eGetMotorStatus != null)
            {
                eGetMotorStatus.Invoke(pg);
            }
        }
Beispiel #4
0
    private void AddPlotToGroup(int id, GameObject plot, GameObject parent, string orientation)
    {
        PlotGroup pg = plotGroups[id];

        pg.AddPlot(plot, parent, orientation);
    }