Exemple #1
0
    public void Analyze()
    {
        discreteTrack = new DiscreteTrack(this, terrainModifier);

        speedProfile = new HistoProfile(17);
        speedProfile.SetBorders(10f, 90f);
        for (int i = 0; i < discreteTrack.speedAnalyzer.Vs.Length; i++)
        {
            speedProfile.AddValue(discreteTrack.speedAnalyzer.Vs[i]);
        }


        curvatureProfile = new HistoProfile(17);
        curvatureProfile.SetBorders(-0.1f, 0.1f);
        for (int i = 0; i < discreteTrack.curvatureAnalyzerTrack.Curvature.Length; i++)
        {
            curvatureProfile.AddValue(discreteTrack.curvatureAnalyzerTrack.Curvature[i]);
        }


        curvatureIdeallineProfile = new HistoProfile(17);
        curvatureIdeallineProfile.SetBorders(-0.07f, 0.07f);
        for (int i = 0; i < discreteTrack.curvatureIdealLineAnalyzer.Curvature.Length; i++)
        {
            curvatureIdeallineProfile.AddValue(discreteTrack.curvatureIdealLineAnalyzer.Curvature[i]);
        }
    }
    public void RenderProfile(HistoProfile profile)
    {
        for (int i = 0; i < instBars.Count; i++)
        {
            Destroy(instBars[i]);
        }

        instBars.Clear();

        for (int i = 0; i < profile.Percents.Length; i++)
        {
            GameObject instBar = Instantiate(prefabBar, transform);

            instBar.GetComponent <RectTransform>().sizeDelta     = new Vector2(width / profile.Percents.Length, profile.Percents[i] * height);
            instBar.GetComponent <RectTransform>().localPosition = new Vector3((width * -0.5f) + i * (width / profile.Percents.Length) + (width / profile.Percents.Length) * 0.5f, profile.Percents[i] * height * 0.5f - height * 0.5f, 0f);

            instBars.Add(instBar);
        }
    }
Exemple #3
0
    public override void TrackUpdated()
    {
        base.TrackUpdated();

        Statics.Log("New Discrete Track");
        discreteTrack = new DiscreteTrack(Track, Track.TerrainModifier);

        Statics.Log("Discrete Track created");
        x  = discreteTrack.shortestPathTrajectory;
        xC = discreteTrack.minimumCurvatureTrajectory;

        gizCPoints = discreteTrack.GetCurvativePointsRight();
        Statics.Log("GetCurvativePointsRight");

        if (instIdealLine != null)
        {
            Destroy(instIdealLine);
            instIdealLine = null;
        }

        instIdealLine = Instantiate(idealLine);
        instIdealLine.transform.position = new Vector3(0f, 0.15f, 0f);
        instIdealLine.GetComponent <ClosedSplineRenderer>().Width        = 0.7f;
        instIdealLine.GetComponent <ClosedSplineRenderer>().ClosedSpline = discreteTrack.idealLineSpline;

        vs = discreteTrack.speedAnalyzer.Vs;


        Statics.Log("vs = discreteTrack.speedAnalyzer.Vs");

        for (int i = 0; i < instSpeedTraps.Count; i++)
        {
            Destroy(instSpeedTraps[i]);
        }
        instSpeedTraps.Clear();

        for (int i = 0; i < discreteTrack.idealLineSpline.ControlPointsAmount; i++)
        {
            float s = ((float)i) / discreteTrack.idealLineSpline.ControlPointsAmount;

            instSpeedTraps.Add(Instantiate(speedTrap));
            instSpeedTraps[instSpeedTraps.Count - 1].transform.position = discreteTrack.idealLineSpline.SplineAt(s);
            //instSpeedTraps[instSpeedTraps.Count - 1].GetComponentInChildren<TextMesh>().text = (1f / discreteTrack.curvatureAnalyzer.Curvature[i]).ToString();
        }

        if (carVisual != null)
        {
            Statics.Log("SetTrack(discreteTrack)");
            carVisual.SetTrack(discreteTrack);
            Statics.Log("SetTrack(discreteTrack) -> Done");
        }

        if (histoSpeed != null)
        {
            HistoProfile histoProfileSpeed = new HistoProfile(17);
            histoProfileSpeed.SetBorders(0f, 100f);
            for (int i = 0; i < discreteTrack.speedAnalyzer.Vs.Length; i++)
            {
                histoProfileSpeed.AddValue(discreteTrack.speedAnalyzer.Vs[i]);
            }
            histoSpeed.RenderProfile(histoProfileSpeed);
        }

        if (histoCurvature != null)
        {
            HistoProfile histoProfileCurvature = new HistoProfile(17);
            histoProfileCurvature.SetBorders(-0.05f, 0.05f);
            for (int i = 0; i < discreteTrack.curvatureAnalyzerTrack.Curvature.Length; i++)
            {
                histoProfileCurvature.AddValue(discreteTrack.curvatureAnalyzerTrack.Curvature[i]);
            }
            histoCurvature.RenderProfile(histoProfileCurvature);
        }
    }