Exemple #1
0
    public void Start()
    {
        MethodDataBoxInstance.gameObject.SetActive(false);

        if (GenerationInst == null)
        {
            GenerationInst = FindObjectOfType <GenerationInstance>();
            if (GenerationInst == null)
            {
                Debug.LogError("No Generation Instance found.");
            }
        }

        //Populate the dropdown for normal methods
        List <Dropdown.OptionData> methodDropdownData = new List <Dropdown.OptionData>();

        foreach (Type type in Methods)
        {
            methodDropdownData.Add(new Dropdown.OptionData(type.Name));
        }
        MethodsDropdown.AddOptions(methodDropdownData);


        //Populate the dropdown for conversion methods
        List <Dropdown.OptionData> cmethodDropdownData = new List <Dropdown.OptionData>();

        foreach (Type type in ConversionMethods)
        {
            cmethodDropdownData.Add(new Dropdown.OptionData(type.Name));
        }
        ConversionMethodsDropdown.AddOptions(cmethodDropdownData);

        //Set the first conversion method as the current conversion method by default
        ConvertMethodChange(0);
    }
        public static float EvaluateFitness(this FitnessFunction fitnessFunction, GenerationInstance instance)
        {
            var f = instance.dieOnCollision && instance.Collided ? .5f : 1f;

            float val;

            switch (fitnessFunction)
            {
            case FitnessFunction.Linear:
                val = instance.transform.position.y;
                break;

            case FitnessFunction.Gate:
                val = instance.transform.position.y * (Array.IndexOf(MainHandler.Gates, instance.currentGate) + 1);
                break;

            case FitnessFunction.VerticalWithGates:
                var goodDistance  = instance.transform.position.y;
                var wasteDistance = instance.totalDistance - goodDistance;

                // we want to credit those, who move upwards
                // but we dont want them to just stand
                val = Mathf.Max(0, goodDistance * (Array.IndexOf(MainHandler.Gates, instance.currentGate) + 1) - wasteDistance);
                break;

            default: return(0f);
            }

            return(val * f);
        }