Beispiel #1
0
    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
                   ));
    }
Beispiel #2
0
    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);
    }