Example #1
0
    // Settings

    public BasicJointGenome(BasicJointGenome template)
    {
        this.parentID          = template.parentID;
        this.inno              = template.inno;
        this.motorStrength     = template.motorStrength;
        this.angleSensitivity  = template.angleSensitivity;
        this.useX              = template.useX;
        this.useY              = template.useY;
        this.useZ              = template.useZ;
        this.useMotors         = template.useMotors;
        this.angleSensors      = template.angleSensors;
        this.velocitySensors   = template.velocitySensors;
        this.positionSensors   = template.positionSensors;
        this.quaternionSensors = template.quaternionSensors;
        this.usePistonY        = template.usePistonY;
    }
Example #2
0
    public void Initialize(BasicJointGenome genome, Agent agent)
    {
        parentID          = genome.parentID;
        inno              = genome.inno;
        motorStrength     = genome.motorStrength;
        angleSensitivity  = genome.angleSensitivity;
        useX              = genome.useX;
        useY              = genome.useY;
        useZ              = genome.useZ;
        useMotors         = genome.useMotors;
        angleSensors      = genome.angleSensors;
        velocitySensors   = genome.velocitySensors;
        positionSensors   = genome.positionSensors;
        quaternionSensors = genome.quaternionSensors;
        usePistonY        = genome.usePistonY;
        isVisible         = agent.isVisible;


        throttleX = new float[1];
        throttleY = new float[1];
        throttleZ = new float[1];
        if (useX)
        {
            if (angleSensors)
            {
                //Debug.Log("Init Joint AngleX! " + inno.ToString());
                angleX = new float[1];
            }
            if (velocitySensors)
            {
                velX = new float[1];
            }
        }
        if (useY)
        {
            if (angleSensors)
            {
                angleY = new float[1];
            }
            if (velocitySensors)
            {
                velY = new float[1];
            }
        }
        if (useZ)
        {
            if (angleSensors)
            {
                angleZ = new float[1];
            }
            if (velocitySensors)
            {
                velZ = new float[1];
            }
        }
        if (positionSensors)
        {
            posX = new float[1];
            posY = new float[1];
            posZ = new float[1];
        }
        if (quaternionSensors)
        {
            quatX = new float[1];
            quatY = new float[1];
            quatZ = new float[1];
            quatW = new float[1];
        }
        if (usePistonY)
        {
            pistonThrottleY = new float[1];
            pistonPosY      = new float[1];
        }

        joint = agent.segmentList[parentID].GetComponent <ConfigurableJoint>();
        if (joint == null)
        {
            Debug.LogAssertion("No existing ConfigurableJoint on segment " + parentID.ToString());
        }

        MeasureRestState(agent);
    }
Example #3
0
    public void CopyBodyGenomeFromTemplate(BodyGenome templateGenome)
    {
        // This method creates a clone of the provided BodyGenome - should have no shared references!!!

        bodyType = templateGenome.bodyType;
        // copy module lists:
        atmosphereSensorList = new List <AtmosphereSensorGenome>();
        for (int i = 0; i < templateGenome.atmosphereSensorList.Count; i++)
        {
            AtmosphereSensorGenome genomeCopy = new AtmosphereSensorGenome(templateGenome.atmosphereSensorList[i]);
            atmosphereSensorList.Add(genomeCopy);
        }
        basicJointList = new List <BasicJointGenome>();
        for (int i = 0; i < templateGenome.basicJointList.Count; i++)
        {
            BasicJointGenome genomeCopy = new BasicJointGenome(templateGenome.basicJointList[i]);
            basicJointList.Add(genomeCopy);
        }
        basicWheelList = new List <BasicWheelGenome>();
        for (int i = 0; i < templateGenome.basicWheelList.Count; i++)
        {
            BasicWheelGenome genomeCopy = new BasicWheelGenome(templateGenome.basicWheelList[i]);
            basicWheelList.Add(genomeCopy);
        }
        contactSensorList = new List <ContactGenome>();
        for (int i = 0; i < templateGenome.contactSensorList.Count; i++)
        {
            ContactGenome genomeCopy = new ContactGenome(templateGenome.contactSensorList[i]);
            contactSensorList.Add(genomeCopy);
        }
        gravitySensorList = new List <GravitySensorGenome>();
        for (int i = 0; i < templateGenome.gravitySensorList.Count; i++)
        {
            GravitySensorGenome genomeCopy = new GravitySensorGenome(templateGenome.gravitySensorList[i]);
            gravitySensorList.Add(genomeCopy);
        }
        healthModuleList = new List <HealthGenome>();
        for (int i = 0; i < templateGenome.healthModuleList.Count; i++)
        {
            HealthGenome genomeCopy = new HealthGenome(templateGenome.healthModuleList[i]);
            healthModuleList.Add(genomeCopy);
        }
        oscillatorInputList = new List <OscillatorGenome>();
        for (int i = 0; i < templateGenome.oscillatorInputList.Count; i++)
        {
            OscillatorGenome genomeCopy = new OscillatorGenome(templateGenome.oscillatorInputList[i]);
            oscillatorInputList.Add(genomeCopy);
        }
        raycastSensorList = new List <RaycastSensorGenome>();
        for (int i = 0; i < templateGenome.raycastSensorList.Count; i++)
        {
            RaycastSensorGenome genomeCopy = new RaycastSensorGenome(templateGenome.raycastSensorList[i]);
            raycastSensorList.Add(genomeCopy);
        }
        shieldList = new List <ShieldGenome>();
        for (int i = 0; i < templateGenome.shieldList.Count; i++)
        {
            ShieldGenome genomeCopy = new ShieldGenome(templateGenome.shieldList[i]);
            shieldList.Add(genomeCopy);
        }
        targetSensorList = new List <TargetSensorGenome>();
        for (int i = 0; i < templateGenome.targetSensorList.Count; i++)
        {
            TargetSensorGenome genomeCopy = new TargetSensorGenome(templateGenome.targetSensorList[i]);
            targetSensorList.Add(genomeCopy);
        }
        thrusterList = new List <ThrusterGenome>();
        for (int i = 0; i < templateGenome.thrusterList.Count; i++)
        {
            ThrusterGenome genomeCopy = new ThrusterGenome(templateGenome.thrusterList[i]);
            thrusterList.Add(genomeCopy);
        }
        torqueList = new List <TorqueGenome>();
        for (int i = 0; i < templateGenome.torqueList.Count; i++)
        {
            TorqueGenome genomeCopy = new TorqueGenome(templateGenome.torqueList[i]);
            torqueList.Add(genomeCopy);
        }
        trajectorySensorList = new List <TrajectorySensorGenome>();
        for (int i = 0; i < templateGenome.trajectorySensorList.Count; i++)
        {
            TrajectorySensorGenome genomeCopy = new TrajectorySensorGenome(templateGenome.trajectorySensorList[i]);
            trajectorySensorList.Add(genomeCopy);
        }
        valueInputList = new List <ValueInputGenome>();
        for (int i = 0; i < templateGenome.valueInputList.Count; i++)
        {
            ValueInputGenome genomeCopy = new ValueInputGenome(templateGenome.valueInputList[i]);
            valueInputList.Add(genomeCopy);
        }
        weaponProjectileList = new List <WeaponProjectileGenome>();
        for (int i = 0; i < templateGenome.weaponProjectileList.Count; i++)
        {
            WeaponProjectileGenome genomeCopy = new WeaponProjectileGenome(templateGenome.weaponProjectileList[i]);
            weaponProjectileList.Add(genomeCopy);
        }
        weaponTazerList = new List <WeaponTazerGenome>();
        for (int i = 0; i < templateGenome.weaponTazerList.Count; i++)
        {
            WeaponTazerGenome genomeCopy = new WeaponTazerGenome(templateGenome.weaponTazerList[i]);
            weaponTazerList.Add(genomeCopy);
        }
    }