public void RemoveRapist(CameraRapist rapist)
 {
     if (rapists.Contains(rapist))
     {
         rapists.Remove(rapist);
         LowerSpeed();
     }
     else
     {
         Debug.Log("Tried to remove a rapist more than once");
     }
 }
 public void AddRapist(CameraRapist rapist)
 {
     if (!rapists.Contains(rapist))
     {
         rapists.Add(rapist);
         rapist.RapistStrength = 0;
         // LowerSpeed();
     }
     else
     {
         Debug.Log("Tried to add a rapist more than once");
     }
 }
 void Start()
 {
     this.owner = GetComponentInParent <CameraRapist>();
 }
    void Update()
    {
        //speed recovery:
        if (currentXSpeed < normalXSpeed)
        {
            currentXSpeed += speedRecoverySpeed * Time.deltaTime;
        }
        else
        {
            currentXSpeed = normalXSpeed;
        }
        if (currentYSpeed < normalYSpeed)
        {
            currentYSpeed += speedRecoverySpeed * Time.deltaTime;
        }
        else
        {
            currentYSpeed = normalYSpeed;
        }
        float newX                = 0; //this.transform.position.x;
        float newY                = 0; // this.transform.position.y;
        float newFieldOfView      = 0;
        float fieldOfViewModifier = 0;

        //float playerXOffset = player.currentHorizontalSpeed * xOffsetWhenRunning;
        if (rapists.Count > 0)
        {
            float        membersX        = 0f;
            float        membersY        = 0f;
            float        numberOfMembers = 0;
            CameraRapist removableRapist = null;
            foreach (CameraRapist r in rapists)
            {
                numberOfMembers += r.PlayerStrength + r.RapistStrength;
                membersX        +=
                    (((player.transform.position.x + player.CameraXOffset) - this.transform.position.x) * r.PlayerStrength) +
                    ((r.Centre.position.x - this.transform.position.x) * r.RapistStrength);
                membersY +=
                    (((player.transform.position.y + yOffsetFromPlayer) - this.transform.position.y) * r.PlayerStrength) +
                    ((r.Centre.position.y - this.transform.position.y) * r.RapistStrength);
                fieldOfViewModifier += r.FieldOfViewModifier;
                r.RapistUpdate();
                if (!r.gameObject.activeSelf)
                {
                    removableRapist = r;
                }
            }
            newX += (membersX / (float)numberOfMembers);
            newY += (membersY / (float)numberOfMembers);
            fieldOfViewModifier /= (float)rapists.Count;
            if (removableRapist != null)//We're doing it this way cause we cant modify a list while going through it..
            {
                RemoveRapist(removableRapist);
            }
        }
        else//Normal noncoersive camera movement
        {
            newX += ((player.transform.position.x + player.CameraXOffset) - this.transform.position.x);
            newY += ((player.transform.position.y + yOffsetFromPlayer) - this.transform.position.y);
        }

        //TODO- we might wanna change the speed on certain occasions, like existing a rapist
        newX = (newX * currentXSpeed * Time.deltaTime) + this.transform.position.x;
        newY = (newY * currentYSpeed * Time.deltaTime) + this.transform.position.y;
        //newFieldOfView = (((originalFieldOfView + fieldOfViewModifier) - Camera.main.fieldOfView) * Time.deltaTime*fieldOfViewSpeed)
        //    + Camera.main.fieldOfView;
        transform.position = new Vector3(newX, newY, transform.position.z);
        //Camera.main.fieldOfView = newFieldOfView;
        Camera.main.fieldOfView = originalFieldOfView;
    }