public override object Read(ES2Reader reader)
    {
        AddonThrusterEffector3D data = new AddonThrusterEffector3D();

        Read(reader, data);
        return(data);
    }
Exemplo n.º 2
0
    public AddonThrusterEffector3D CloneThisAddon()
    {
        AddonThrusterEffector3D clonedAddon = new AddonThrusterEffector3D(this.critterNodeID, this.innov);

        clonedAddon.maxForce[0] = this.maxForce[0];
        return(clonedAddon);
    }
 public SegaddonThrusterEffector3D(AddonThrusterEffector3D sourceNode) {        
     maxForce = new float[1];
     maxForce[0] = sourceNode.maxForce[0];
     throttleX = new float[1];
     throttleX[0] = 0f;
     throttleY = new float[1];
     throttleY[0] = 0f;
     throttleZ = new float[1];
     throttleZ[0] = 0f;
 }
 public override object Read(ES2Reader reader) {
     AddonThrusterEffector3D data = new AddonThrusterEffector3D();
     Read(reader, data);
     return data;
 }
    public void ClickAttachAddon() {
        Debug.Log("Attach Addon: " + ((CritterNodeAddonBase.CritterNodeAddonTypes)critterEditorUI.panelNodeAddons.dropdownAddonType.value).ToString());
        CritterNodeAddonBase.CritterNodeAddonTypes addonType = (CritterNodeAddonBase.CritterNodeAddonTypes)critterEditorUI.panelNodeAddons.dropdownAddonType.value;
        CritterNode sourceNode = selectedSegment.GetComponent<CritterSegment>().sourceNode;
        
        if (addonType == CritterNodeAddonBase.CritterNodeAddonTypes.PhysicalAttributes) {
            bool listContainsType = false;
            for (int i = 0; i < critterConstructorManager.masterCritter.masterCritterGenome.addonPhysicalAttributesList.Count; i++) {  // check for existing addon of this type
                if (critterConstructorManager.masterCritter.masterCritterGenome.addonPhysicalAttributesList[i].critterNodeID == sourceNode.ID) {
                    listContainsType = true;
                }
            }
            if (!listContainsType) {  // only allows 1 instance of the JointMotor type
                AddonPhysicalAttributes newPhysicalAttributes = new AddonPhysicalAttributes(sourceNode.ID, GetNextAddonInnov());
                critterConstructorManager.masterCritter.masterCritterGenome.addonPhysicalAttributesList.Add(newPhysicalAttributes);
                //critterEditorUI.panelNodeAddons.panelAddonsList.GetComponent<PanelAddonsList>().RepopulateList(critterConstructorManager.masterCritter.masterCritterGenome, sourceNode.ID);
            }
        }
        
        else if (addonType == CritterNodeAddonBase.CritterNodeAddonTypes.JointAngleSensor) {            
            bool listContainsType = false;
            // Move duplicate check to an Add Addon function within the CritterGenome? to handle it automagically?
            for (int i = 0; i < critterConstructorManager.masterCritter.masterCritterGenome.addonJointAngleSensorList.Count; i++) {  // check for existing addon of this type
                if (critterConstructorManager.masterCritter.masterCritterGenome.addonJointAngleSensorList[i].critterNodeID == sourceNode.ID) {
                    // there already exists a jointMotor!!
                    listContainsType = true;
                }
            }
            if (!listContainsType) {  // only allows 1 instance of the newJointAngleSensor type
                AddonJointAngleSensor newJointAngleSensor = new AddonJointAngleSensor(sourceNode.ID, GetNextAddonInnov());
                critterConstructorManager.masterCritter.masterCritterGenome.addonJointAngleSensorList.Add(newJointAngleSensor);
                //critterEditorUI.panelNodeAddons.panelAddonsList.GetComponent<PanelAddonsList>().RepopulateList(critterConstructorManager.masterCritter.masterCritterGenome, sourceNode.ID);
            }
        }
        else if (addonType == CritterNodeAddonBase.CritterNodeAddonTypes.ContactSensor) {
            bool listContainsType = false;
            for (int i = 0; i < critterConstructorManager.masterCritter.masterCritterGenome.addonContactSensorList.Count; i++) {  // check for existing addon of this type
                if (critterConstructorManager.masterCritter.masterCritterGenome.addonContactSensorList[i].critterNodeID == sourceNode.ID) {
                    listContainsType = true;
                }
            }
            if (!listContainsType) {  // only allows 1 instance of the ContactSensor type
                AddonContactSensor newContactSensor = new AddonContactSensor(sourceNode.ID, GetNextAddonInnov());
                critterConstructorManager.masterCritter.masterCritterGenome.addonContactSensorList.Add(newContactSensor);
            }
        }
        else if (addonType == CritterNodeAddonBase.CritterNodeAddonTypes.RaycastSensor) {
            AddonRaycastSensor newRaycastSensor = new AddonRaycastSensor(sourceNode.ID, GetNextAddonInnov());
            critterConstructorManager.masterCritter.masterCritterGenome.addonRaycastSensorList.Add(newRaycastSensor);            
        }
        else if (addonType == CritterNodeAddonBase.CritterNodeAddonTypes.CompassSensor1D) {
            AddonCompassSensor1D newCompassSensor1D = new AddonCompassSensor1D(sourceNode.ID, GetNextAddonInnov());
            critterConstructorManager.masterCritter.masterCritterGenome.addonCompassSensor1DList.Add(newCompassSensor1D);
        }
        else if (addonType == CritterNodeAddonBase.CritterNodeAddonTypes.CompassSensor3D) {
            AddonCompassSensor3D newCompassSensor3D = new AddonCompassSensor3D(sourceNode.ID, GetNextAddonInnov());
            critterConstructorManager.masterCritter.masterCritterGenome.addonCompassSensor3DList.Add(newCompassSensor3D);
        }
        else if (addonType == CritterNodeAddonBase.CritterNodeAddonTypes.PositionSensor1D) {
            AddonPositionSensor1D newPositionSensor1D = new AddonPositionSensor1D(sourceNode.ID, GetNextAddonInnov());
            critterConstructorManager.masterCritter.masterCritterGenome.addonPositionSensor1DList.Add(newPositionSensor1D);
        }
        else if (addonType == CritterNodeAddonBase.CritterNodeAddonTypes.PositionSensor3D) {
            AddonPositionSensor3D newPositionSensor3D = new AddonPositionSensor3D(sourceNode.ID, GetNextAddonInnov());
            critterConstructorManager.masterCritter.masterCritterGenome.addonPositionSensor3DList.Add(newPositionSensor3D);
        }
        else if (addonType == CritterNodeAddonBase.CritterNodeAddonTypes.RotationSensor1D) {
            AddonRotationSensor1D newRotationSensor1D = new AddonRotationSensor1D(sourceNode.ID, GetNextAddonInnov());
            critterConstructorManager.masterCritter.masterCritterGenome.addonRotationSensor1DList.Add(newRotationSensor1D);
        }
        else if (addonType == CritterNodeAddonBase.CritterNodeAddonTypes.RotationSensor3D) {
            AddonRotationSensor3D newRotationSensor3D = new AddonRotationSensor3D(sourceNode.ID, GetNextAddonInnov());
            critterConstructorManager.masterCritter.masterCritterGenome.addonRotationSensor3DList.Add(newRotationSensor3D);
        }
        else if (addonType == CritterNodeAddonBase.CritterNodeAddonTypes.VelocitySensor1D) {
            AddonVelocitySensor1D newVelocitySensor1D = new AddonVelocitySensor1D(sourceNode.ID, GetNextAddonInnov());
            critterConstructorManager.masterCritter.masterCritterGenome.addonVelocitySensor1DList.Add(newVelocitySensor1D);
        }
        else if (addonType == CritterNodeAddonBase.CritterNodeAddonTypes.VelocitySensor3D) {
            AddonVelocitySensor3D newVelocitySensor3D = new AddonVelocitySensor3D(sourceNode.ID, GetNextAddonInnov());
            critterConstructorManager.masterCritter.masterCritterGenome.addonVelocitySensor3DList.Add(newVelocitySensor3D);
        }
        else if (addonType == CritterNodeAddonBase.CritterNodeAddonTypes.Altimeter) {
            bool listContainsType = false;
            for (int i = 0; i < critterConstructorManager.masterCritter.masterCritterGenome.addonAltimeterList.Count; i++) {  // check for existing addon of this type
                if (critterConstructorManager.masterCritter.masterCritterGenome.addonAltimeterList[i].critterNodeID == sourceNode.ID) {
                    listContainsType = true;
                }
            }
            if (!listContainsType) {  // only allows 1 instance of the Altimeter type
                AddonAltimeter newAltimeter = new AddonAltimeter(sourceNode.ID, GetNextAddonInnov());
                critterConstructorManager.masterCritter.masterCritterGenome.addonAltimeterList.Add(newAltimeter);
            }
        }
        else if (addonType == CritterNodeAddonBase.CritterNodeAddonTypes.EarBasic) {
            AddonEarBasic newEarBasic = new AddonEarBasic(sourceNode.ID, GetNextAddonInnov());
            critterConstructorManager.masterCritter.masterCritterGenome.addonEarBasicList.Add(newEarBasic);
        }
        else if (addonType == CritterNodeAddonBase.CritterNodeAddonTypes.Gravity) {
            AddonGravitySensor newGravitySensor = new AddonGravitySensor(sourceNode.ID, GetNextAddonInnov());
            critterConstructorManager.masterCritter.masterCritterGenome.addonGravitySensorList.Add(newGravitySensor);
        }
        else if (addonType == CritterNodeAddonBase.CritterNodeAddonTypes.OscillatorInput) {
            AddonOscillatorInput newOscillatorInput = new AddonOscillatorInput(sourceNode.ID, GetNextAddonInnov());
            critterConstructorManager.masterCritter.masterCritterGenome.addonOscillatorInputList.Add(newOscillatorInput);
            //critterEditorUI.panelNodeAddons.panelAddonsList.GetComponent<PanelAddonsList>().RepopulateList(critterConstructorManager.masterCritter.masterCritterGenome, sourceNode.ID);
        }
        else if (addonType == CritterNodeAddonBase.CritterNodeAddonTypes.ValueInput) {
            AddonValueInput newValueInput = new AddonValueInput(sourceNode.ID, GetNextAddonInnov());
            critterConstructorManager.masterCritter.masterCritterGenome.addonValueInputList.Add(newValueInput);
        }
        else if (addonType == CritterNodeAddonBase.CritterNodeAddonTypes.TimerInput) {
            AddonTimerInput newTimerInput = new AddonTimerInput(sourceNode.ID, GetNextAddonInnov());
            critterConstructorManager.masterCritter.masterCritterGenome.addonTimerInputList.Add(newTimerInput);
        }

        else if (addonType == CritterNodeAddonBase.CritterNodeAddonTypes.JointMotor) {
            bool listContainsType = false;
            for (int i = 0; i < critterConstructorManager.masterCritter.masterCritterGenome.addonJointMotorList.Count; i++) {  // check for existing addon of this type
                if (critterConstructorManager.masterCritter.masterCritterGenome.addonJointMotorList[i].critterNodeID == sourceNode.ID) {
                    // there already exists a jointMotor!!
                    listContainsType = true;
                }
            }
            if (!listContainsType) {  // only allows 1 instance of the JointMotor type
                AddonJointMotor newJointMotor = new AddonJointMotor(sourceNode.ID, GetNextAddonInnov());
                critterConstructorManager.masterCritter.masterCritterGenome.addonJointMotorList.Add(newJointMotor);
                //critterEditorUI.panelNodeAddons.panelAddonsList.GetComponent<PanelAddonsList>().RepopulateList(critterConstructorManager.masterCritter.masterCritterGenome, sourceNode.ID);
            }
        }
        else if (addonType == CritterNodeAddonBase.CritterNodeAddonTypes.ThrusterEffector1D) {
            AddonThrusterEffector1D newThrusterEffector1D = new AddonThrusterEffector1D(sourceNode.ID, GetNextAddonInnov());
            critterConstructorManager.masterCritter.masterCritterGenome.addonThrusterEffector1DList.Add(newThrusterEffector1D);
        }
        else if (addonType == CritterNodeAddonBase.CritterNodeAddonTypes.ThrusterEffector3D) {
            bool listContainsType = false;
            for (int i = 0; i < critterConstructorManager.masterCritter.masterCritterGenome.addonThrusterEffector3DList.Count; i++) {  // check for existing addon of this type
                if (critterConstructorManager.masterCritter.masterCritterGenome.addonThrusterEffector3DList[i].critterNodeID == sourceNode.ID) {
                    listContainsType = true;
                }
            }
            if (!listContainsType) { 
                AddonThrusterEffector3D newThrusterEffector3D = new AddonThrusterEffector3D(sourceNode.ID, GetNextAddonInnov());
                critterConstructorManager.masterCritter.masterCritterGenome.addonThrusterEffector3DList.Add(newThrusterEffector3D);
            }
        }
        else if (addonType == CritterNodeAddonBase.CritterNodeAddonTypes.TorqueEffector1D) {
            AddonTorqueEffector1D newTorqueEffector1D = new AddonTorqueEffector1D(sourceNode.ID, GetNextAddonInnov());
            critterConstructorManager.masterCritter.masterCritterGenome.addonTorqueEffector1DList.Add(newTorqueEffector1D);
        }
        else if (addonType == CritterNodeAddonBase.CritterNodeAddonTypes.TorqueEffector3D) {
            bool listContainsType = false;
            for (int i = 0; i < critterConstructorManager.masterCritter.masterCritterGenome.addonTorqueEffector3DList.Count; i++) {  // check for existing addon of this type
                if (critterConstructorManager.masterCritter.masterCritterGenome.addonTorqueEffector3DList[i].critterNodeID == sourceNode.ID) {
                    listContainsType = true;
                }
            }
            if (!listContainsType) {  // only allows 1 instance of the Torque type
                AddonTorqueEffector3D newTorqueEffector3D = new AddonTorqueEffector3D(sourceNode.ID, GetNextAddonInnov());
                critterConstructorManager.masterCritter.masterCritterGenome.addonTorqueEffector3DList.Add(newTorqueEffector3D);
            }
        }
        else if (addonType == CritterNodeAddonBase.CritterNodeAddonTypes.MouthBasic) {
            bool listContainsType = false;
            for (int i = 0; i < critterConstructorManager.masterCritter.masterCritterGenome.addonMouthBasicList.Count; i++) {  // check for existing addon of this type
                if (critterConstructorManager.masterCritter.masterCritterGenome.addonMouthBasicList[i].critterNodeID == sourceNode.ID) {
                    listContainsType = true;
                }
            }
            if (!listContainsType) {  // only allows 1 instance of the MouthBasic type
                AddonMouthBasic newMouthBasic = new AddonMouthBasic(sourceNode.ID, GetNextAddonInnov());
                critterConstructorManager.masterCritter.masterCritterGenome.addonMouthBasicList.Add(newMouthBasic);
            }
        }
        else if (addonType == CritterNodeAddonBase.CritterNodeAddonTypes.NoiseMakerBasic) {
            AddonNoiseMakerBasic newNoiseMakerBasic = new AddonNoiseMakerBasic(sourceNode.ID, GetNextAddonInnov());
            critterConstructorManager.masterCritter.masterCritterGenome.addonNoiseMakerBasicList.Add(newNoiseMakerBasic);
        }
        else if (addonType == CritterNodeAddonBase.CritterNodeAddonTypes.Sticky) {
            bool listContainsType = false;
            for (int i = 0; i < critterConstructorManager.masterCritter.masterCritterGenome.addonStickyList.Count; i++) {  // check for existing addon of this type
                if (critterConstructorManager.masterCritter.masterCritterGenome.addonStickyList[i].critterNodeID == sourceNode.ID) {
                    listContainsType = true;
                }
            }
            if (!listContainsType) {  // only allows 1 instance of the Sticky type
                AddonSticky newSticky = new AddonSticky(sourceNode.ID, GetNextAddonInnov());
                critterConstructorManager.masterCritter.masterCritterGenome.addonStickyList.Add(newSticky);
            }
        }
        else if (addonType == CritterNodeAddonBase.CritterNodeAddonTypes.WeaponBasic) {
            bool listContainsType = false;
            for (int i = 0; i < critterConstructorManager.masterCritter.masterCritterGenome.addonWeaponBasicList.Count; i++) {  // check for existing addon of this type
                if (critterConstructorManager.masterCritter.masterCritterGenome.addonWeaponBasicList[i].critterNodeID == sourceNode.ID) {
                    listContainsType = true;
                }
            }
            if (!listContainsType) {  // only allows 1 instance of the WeaponBasic type
                AddonWeaponBasic newWeaponBasic = new AddonWeaponBasic(sourceNode.ID, GetNextAddonInnov());
                critterConstructorManager.masterCritter.masterCritterGenome.addonWeaponBasicList.Add(newWeaponBasic);
            }
        }

        critterEditorUI.panelNodeAddons.panelAddonsList.GetComponent<PanelAddonsList>().RepopulateList(critterConstructorManager.masterCritter.masterCritterGenome, sourceNode.ID);
    }
 public AddonThrusterEffector3D CloneThisAddon() {
     AddonThrusterEffector3D clonedAddon = new AddonThrusterEffector3D(this.critterNodeID, this.innov);
     clonedAddon.maxForce[0] = this.maxForce[0];
     return clonedAddon;
 }