/*
     * public Animal()
     * {
     *  //Mesh_Agent_Component = GetComponent<NavMeshAgent>();
     * }
     */

    private void Awake()
    {
        G_strength     = new Gene(10.0f, GlobalValues.MIN_STRENGTH, GlobalValues.MAX_STRENGTH, GlobalValues.STRENGTH_CONSUMPTION_FACTOR);
        G_baseSpeed    = new Gene(10.0f, GlobalValues.MIN_BASE_SPEED, GlobalValues.MAX_BASE_SPEED, GlobalValues.SPEED_CONSUMPTION_FACTOR);
        G_sizeScale    = new Gene(1.0f, GlobalValues.MIN_SIZE_SCALE, GlobalValues.MAX_SIZE_SCALE, GlobalValues.SIZE_SCALE_CONSUMPTION_FACTOR);
        G_visionRadius = new Gene(10.0f, G_sizeScale.value, GlobalValues.MAX_VISION_RADIUS, GlobalValues.VISION_RADIUS_CONSUMPTION_FACTOR);
        G_camouflage   = new Gene(10.0f, GlobalValues.MIN_CAMOUFLAGE, GlobalValues.MAX_CAMOUFLAGE, GlobalValues.CAMOUFLAGE_CONSUMPTION_FACTOR);
        G_sex          = Sex.FEMALE;

        C_size = new Chromosome(new List <Gene>()
        {
            G_sizeScale, G_strength
        });
        C_movility = new Chromosome(new List <Gene>()
        {
            G_baseSpeed
        });
        C_perception = new Chromosome(new List <Gene>()
        {
            G_visionRadius
        });
        C_stealth = new Chromosome(new List <Gene>()
        {
            G_camouflage
        });

        //food = new List<GameObject>();

        Mesh_Agent_Component = GetComponent <NavMeshAgent>();
        Perception_Component = GetComponentInChildren <PerceptionComponent>();
        _matPropertyBlock    = new MaterialPropertyBlock();
        _renderer            = GetComponent <Renderer>();
        _rigidbody           = GetComponent <Rigidbody>();

        energy        = 100;
        current_state = Animal_State.RESTING;

        birthday = TimeController.Instance.world_calendar;
    }
    // Start is called before the first frame update
    void Start()
    {
        lastTimeReproduced = TimeController.Instance.world_calendar;

        OnStart();
    }