Пример #1
0
    void refreshGhostCarsPositions(List <CarNeuralCore> sortedCars)
    {
        if (sortedCars != null && sortedCars.Count > 0)
        {
            if (prevCarWithFurthestDistTravelled != null)
            {
                CarFitness carFitness = sortedCars [0].GetComponent <CarFitness> ();

                if (carFitness.DistanceTravelled > prevCarWithFurthestDistTravelled.DistTravelled)
                {
                    lastBestGameObject.SetActive(false);
                    allTimeBest.SetActive(true);
                    allTimeBest.transform.position = carFitness.PosWhenDisabled;
                    allTimeBest.transform.rotation = carFitness.RotationWhenDisabled;
                }
                else
                {
                    lastBestGameObject.SetActive(true);
                    lastBestGameObject.transform.position = carFitness.PosWhenDisabled;
                    lastBestGameObject.transform.rotation = carFitness.RotationWhenDisabled;
                }
            }
        }
        else
        {
            allTimeBest.SetActive(false);
            lastBestGameObject.SetActive(false);
        }
    }
Пример #2
0
    void onCarDisabled(CarNeuralCoreBase carNeuralCoreBase)
    {
        CarFitness carFitness = carNeuralCoreBase.GetComponent <CarFitness> ();

        if (carFitness != null)
        {
            carFitness.DistanceTravelled    = stage.GetDistanceFromBeginning(carFitness.PosWhenDisabled);
            carFitness.RotationWhenDisabled = carNeuralCoreBase.transform.rotation;

            bool allDisabled = true;

            for (int i = 0; i < cars.Count; i++)
            {
                if (cars [i].IsActive)
                {
                    allDisabled = false;

                    break;
                }
            }

            if (allDisabled && !isActivatingCars)
            {
                onAllCarsDisabled();
            }
        }
    }
Пример #3
0
    private void FixedUpdate()
    {
        if (carToFollow != null && camera != null)
        {
            if (!IsVisible)
            {
                show();
            }

            Vector3 carPos    = carToFollow.transform.position;
            Vector2 screenPos = camera.WorldToScreenPoint(carPos);
            this.transform.position = screenPos;

            if (Time.frameCount % 2 == 0)
            {
                cacheCarFitnessIfNeeded();
                float dist = stage.GetDistanceFromBeginning(carPos);
                int   fit  = CarFitness.CalculateFitness(carFitness.GatesPassed, dist, carFitness.AvgVelocity, carFitness.FitnessType);

                distTravelled.text = (dist).ToString("0.00");
                avgSpeed.text      = (carFitness.AvgVelocity).ToString("0.00");
                fitness.text       = (fit).ToString();
            }
        }
        else if (IsVisible)
        {
            hide();
        }
    }
Пример #4
0
 void cacheCarFitnessIfNeeded()
 {
     if (carToFollow != null)
     {
         carFitness = carToFollow.GetComponent <CarFitness> ();
     }
 }
Пример #5
0
    public CarSimpleData GetCarSimpleData()
    {
        CarFitness carFitness = GetComponent <CarFitness> ();

        return(new CarSimpleData(GetWeights(), carFitness.Fitness, carFitness.DistanceTravelled, SensorsLength, AngleBetweenSensors));
    }