private void onAgentEaten(Predator eater, IAgent agent) { if (AgentEaten != null) { AgentEaten(this, eater, agent); } }
public double[] calculatePredatorSensors(Predator predator) { // Agents are sensed by predators, plus they have 1 velocity sensor double[] sensors = new double[SENSORS_PER_OBJECT_TYPE + 1]; sensors[0] = predator.Velocity / predator.MaxVelocity; // For every plant foreach (var agent in Agents) { // if the plant isn't available for eating then we do not activate the sensors if (agent.HidingMode == predator.AttackType) { continue; } // Calculate the distance to the pred from the predator int[] distanceAndOrientation = _sensorDictionary.getDistanceAndOrientation((int)predator.X, (int)predator.Y, (int)agent.X, (int)agent.Y); int dist = distanceAndOrientation[0]; int pos = distanceAndOrientation[1]; // If it's too far away for the predator to see if (dist > AgentHorizon) { continue; } // Identify the appropriate sensor int sIdx = getSensorIndex(predator, 1, pos); if (sIdx == -1) { continue; } // Add the signal strength for this plant to the sensor sensors[sIdx] += 1.0 - dist / AgentHorizon; } return(sensors); }
void _world_AgentEaten(object sender, Predator eater, IAgent eaten) { pollAlternativeAction(eaten); }
public double[] calculatePredatorSensors(Predator predator) { // Agents are sensed by predators, plus they have 1 velocity sensor double[] sensors = new double[SENSORS_PER_OBJECT_TYPE + 1]; sensors[0] = predator.Velocity / predator.MaxVelocity; // For every plant foreach (var agent in Agents) { // if the plant isn't available for eating then we do not activate the sensors if (agent.HidingMode == predator.AttackType) continue; // Calculate the distance to the pred from the predator int[] distanceAndOrientation = _sensorDictionary.getDistanceAndOrientation((int)predator.X, (int)predator.Y, (int)agent.X, (int)agent.Y); int dist = distanceAndOrientation[0]; int pos = distanceAndOrientation[1]; // If it's too far away for the predator to see if (dist > AgentHorizon) continue; // Identify the appropriate sensor int sIdx = getSensorIndex(predator, 1, pos); if (sIdx == -1) continue; // Add the signal strength for this plant to the sensor sensors[sIdx] += 1.0 - dist / AgentHorizon; } return sensors; }
private void onAgentEaten(Predator eater, IAgent agent) { if (AgentEaten != null) AgentEaten(this, eater, agent); }
void World_AgentEaten(object sender, Predator eater, IAgent eaten) { //MessageBox.Show("Agent eaten: " + _experiment.World.CurrentStep); }