private EdibleTrait[] GetEdibleTraits(RaycastHit[] hits) { List <EdibleTrait> edibleTraits = new List <EdibleTrait>(); foreach (RaycastHit hit in hits) { if (ReferenceEquals(hit.transform.gameObject, this.gameObject)) { continue; } //Is the thing edible? EdibleTrait edibleTrait = hit.transform.GetComponent <EdibleTrait>(); if (edibleTrait) { // wolves won't eat wolves WolfController wolfController = hit.transform.GetComponent <WolfController>(); if (!wolfController) { // They aren't vegetarien MeatTrait meatTrait = hit.transform.GetComponent <MeatTrait>(); if (meatTrait) { HealthTrait healthTrait = hit.transform.GetComponent <HealthTrait>(); if (healthTrait && !healthTrait.isAlive) { edibleTraits.Add(edibleTrait); } } } } } return(edibleTraits.ToArray()); }
/// <summary> /// Gets all the food things that are alive, edible, attackable, not a wolf and not self /// </summary> /// <param name="hits"></param> /// <returns></returns> private AttackableTrait[] GetAllAliveAttackableFoodTraits(RaycastHit[] hits) { List <AttackableTrait> attackingTraits = new List <AttackableTrait>(); foreach (RaycastHit hit in hits) { if (ReferenceEquals(hit.transform.gameObject, this.gameObject)) { continue; } //Is the thing edible? EdibleTrait edibleTrait = hit.transform.GetComponent <EdibleTrait>(); if (edibleTrait) { // wolves won't eat wolves WolfController wolfController = hit.transform.GetComponent <WolfController>(); if (!wolfController) { // They aren't vegetarien MeatTrait meatTrait = hit.transform.GetComponent <MeatTrait>(); if (meatTrait) { AttackableTrait attackableTrait = hit.transform.GetComponent <AttackableTrait>(); if (attackableTrait) { attackingTraits.Add(attackableTrait); } } } } } return(attackingTraits.ToArray()); }