/// <summary>
 /// Called when animal enters behavior
 /// </summary>
 /// <param name="avalabilityToAnimals"></param>
 public void EnterBehavior(GameObject animal)
 {
     behaviorData.behaviorName      = this.name;
     behaviorData.ForceExitCallback = RemoveBehavior;
     stepCompletedCallback          = OnStepCompleted;
     animal.GetComponent <AnimalBehaviorManager>().activeBehavior = behaviorData;
     animalsToSteps.Add(animal, 0);
     ProceedToNext(animal);
 }
Esempio n. 2
0
    /// <summary>
    /// Assign necessary data to this script
    /// </summary>
    /// <param name="animal"></param>
    /// <param name="callBack"></param>
    /// <param name="collaboratingAnimals"></param>
    public void InitializePattern(GameObject animal, StepCompletedCallBack callBack, StepCompletedCallBack alternativeCallback)
    {
        AnimalData animalData = new AnimalData();

        animalData.animal              = animal.GetComponent <Animal>();
        animalData.callback            = callBack;
        animalData.alternativeCallback = alternativeCallback;

        AnimalsToAnimalData.Add(animal, animalData);
        EnterPattern(animal, animalData);
    }
Esempio n. 3
0
    /// <summary>
    /// Actions taken upon completion of pattern. All following are generally necessary when exit. It is recommended to call base when overridden.
    /// </summary>
    /// <param name="animal"></param>
    /// <param name="isCallingCallback">Set to false when force exiting without completion, leave as default</param>
    protected virtual void ExitPattern(GameObject animal, bool callCallback = true)
    {
        animal.GetComponent <AnimalBehaviorManager>().activeBehaviorPattern = null;
        StepCompletedCallBack callback = AnimalsToAnimalData[animal].callback;

        AnimalsToAnimalData.Remove(animal);
        if (callCallback)
        {
            callback.Invoke(animal);
        }
    }
 /// <summary>
 /// Adds a pattern to this animal
 /// </summary>
 /// <param name="behaviorPattern"></param>
 /// <param name="stepCompletedCallBack"></param>
 /// <param name="collaboratingAnimals"></param>
 public void AddBehaviorPattern(BehaviorPattern behaviorPattern, StepCompletedCallBack stepCompletedCallBack, StepCompletedCallBack alternativeCallback)
 {
     activeBehaviorPattern = behaviorPattern;
     behaviorPattern.InitializePattern(this.gameObject, stepCompletedCallBack, alternativeCallback);
 }