public void SetBehaviour(CritterInteraction interaction) { ReturnToNormalState(); switch (interaction.inducedState) { case State.Interacting: Debug.Log("Setting INTERACT Behaviour"); if (interaction.behaviour != null) { critter.interactBehaviour = UpdateBehaviourComponent(interaction.behaviour); } else { critter.interactBehaviour = UpdateBehaviourComponent(critter.data.defaultInteractBehaviour); } break; case State.Eating: Debug.Log("Setting EATING Behaviour"); if (interaction.behaviour != null) { critter.eatingBehaviour = UpdateBehaviourComponent(interaction.behaviour); } else { critter.eatingBehaviour = UpdateBehaviourComponent(critter.data.defaultEatingBehaviour); } break; case State.Sleep: if (interaction.behaviour != null) { critter.sleepBehaviour = UpdateBehaviourComponent(interaction.behaviour); } else { critter.sleepBehaviour = UpdateBehaviourComponent(critter.data.defaultSleepBehaviour); } break; case State.Threatened: Debug.Log("Setting THREATENED Behaviour"); if (interaction.behaviour != null) { critter.threatenedBehaviour = UpdateBehaviourComponent(interaction.behaviour); } else { critter.threatenedBehaviour = UpdateBehaviourComponent(critter.data.defaultThreatenedBehaviour); } break; } SetState(interaction.inducedState); }
public void AddNewInteraction(Interactables tag, State state, CritterBehaviour behaviour = null) { foreach (CritterInteraction interaction in critter.critterInteractions) { if (interaction.interactableTag == tag) { if (interaction.inducedState == state) { return; } else { critter.critterInteractions.Remove(interaction); break; } } } CritterInteraction newInteraction = new CritterInteraction(); newInteraction.interactableTag = tag; newInteraction.inducedState = state; newInteraction.behaviour = behaviour; critter.critterInteractions.Add(newInteraction); }