public static bool CheckSight(Pawn a, DestroyableProp b) { if (Vector3.Distance(a.transform.position, b.transform.position) <= Pawn.sightRange) { if (instance.debug) { Debug.Log("Distance Checks out"); } RaycastHit hit; foreach (Vector3 corner in corners) { Physics.Raycast(a.transform.position + verticalOffset + corner, b.transform.position - (a.transform.position + verticalOffset), out hit); if (hit.collider != null && hit.collider.GetComponent <DestroyableProp>() == b) { if (instance.debug) { Debug.Log("LoS Checks out to " + hit.collider.name); } return(true); } } } return(false); }
public static bool DefaultAttackIsValidTarget(Targetable t, Pawn owner) { Pawn p = t.GetComponent <Pawn>(); DestroyableProp d = t.GetComponent <DestroyableProp>(); if (p != null) { return((!p.isDead) && (p.owner != owner.owner) && (Vector3.Distance(owner.transform.position, p.transform.position) < owner.weapon.range)); } else if (d != null) { return(Vector3.Distance(owner.transform.position, d.transform.position) < owner.weapon.range); } else { return(false); } }