I have been recently learning about delegates & events. I would like to know performance wise if there is another way to do this. Or should I just write events for every single command like so:
public delegate void IndividualUnitAttackingDelegate(GlobalAISensor aiSensor);
public static event IndividualUnitAttackingDelegate MoveEnemyUnitToAttack1;
public static event IndividualUnitAttackingDelegate MoveEnemyUnitToAttack2;
public static event IndividualUnitAttackingDelegate MoveEnemyUnitToAttack3;
public delegate void IndividualDefendingUnitDelegate(Vector3 destination);
public static event IndividualDefendingUnitDelegate MoveEnemyUnitToDefend1;
public static event IndividualDefendingUnitDelegate MoveEnemyUnitToDefend2;
public static event IndividualDefendingUnitDelegate MoveEnemyUnitToDefend3;
here is how it’s being used in this main event script if for whatever reason you need that information:
void DetermineTargetDestination()
{
if (Enemy1DefendPlanet)
MoveEnemyUnitToDefend1(defendPosition1);
if (Enemy2DefendPlanet)
MoveEnemyUnitToDefend2(defendPosition2);
if (Enemy3DefendPlanet)
MoveEnemyUnitToDefend3(defendPosition3);
if (!Enemy1DefendPlanet && aiSensor1 != null && MoveEnemyUnitToAttack1 != null)
MoveEnemyUnitToAttack1(aiSensor1);
if (!Enemy2DefendPlanet && aiSensor2 != null && MoveEnemyUnitToAttack2 != null)
MoveEnemyUnitToAttack2(aiSensor2);
if (!Enemy3DefendPlanet && aiSensor3 != null && MoveEnemyUnitToAttack3 != null)
MoveEnemyUnitToAttack3(aiSensor3);
Enemy1DefendPlanet = false;
Enemy2DefendPlanet = false;
Enemy3DefendPlanet = false;
}