public override object Read(ES2Reader reader) { AddonThrusterEffector3D data = new AddonThrusterEffector3D(); Read(reader, data); return(data); }
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; }