public bool InfoCanSee(HumanoidModel other) { Vector3 thisVantagePoint = GetVantagePoint(); Vector3 otherVantagePoint = other.GetVantagePoint(); float distance = Vector3.Distance(thisVantagePoint, otherVantagePoint); if (distance > sightDistance) { return(false); } return(direction.WithinRangeOfVision(otherVantagePoint, visionWideness) && EnvironmentPhysics.LineOfSightToVantagePointExists( visionSharpness, thisVantagePoint, otherVantagePoint )); }
public virtual void EffectOnSeeEnemy(HumanoidModel enemy) { Vector3 thisVantagePoint = GetVantagePoint(); Projectile thisWeapon = currentWeapon.GetProjectile(); Vector3 enemyVantagePoint = enemy.GetVantagePoint(); Projectile enemyWeapon = enemy.currentWeapon.GetProjectile(); TerrainDisparity terrainDisparity = EnvironmentPhysics.CalculateTerrainDisparityBetween( thisWeapon, enemyWeapon, thisVantagePoint, enemyVantagePoint ); float coverDisparity = terrainDisparity.visibleToTarget - terrainDisparity.visibleToObserver; // the following line prevents advantageous cover from decreasing stress coverDisparity = coverDisparity < 0 ? 0 : coverDisparity; baseStressManager.PendSightStress(coverDisparity, enemy); }