Example #1
0
    private void Scan()
    {
        bool suspiciousActorSeen = false;

        // Check each player:
        foreach (PlayerController actor in AlarmSingleton.SuspiciousActors)
        {
            Vector3 actorDirection = AlarmSingleton.GetActorTorso(actor) - transform.position;
            // Check to see if the actor is in the field of view and range of the camera.
            if (Vector3.Angle(actorDirection, transform.forward) < fieldOfView / 2f &&
                Vector3.Project(actorDirection, transform.forward).magnitude < maxViewDistance)
            {
                // Trigger event if this is the first actor seen
                // and the alarm is not already in a triggered state.
                if (audioSource.isPlaying == false)
                {
                    audioSource.PlayOneShot(cameraAlarm);
                }
                suspiciousActorSeen = true;
                if (!isCurrentlyAlarmed)
                {
                    isCurrentlyAlarmed = true;
                    OnTriggered?.Invoke(actor);
                }
                break;
            }
        }
        isCurrentlyAlarmed = suspiciousActorSeen;
    }
Example #2
0
 private void OnTriggerEnter(Collider ball)
 {
     if (ball.GetComponent <Ball>() != null)
     {
         OnTriggered?.Invoke();
     }
 }
Example #3
0
 /// <summary>
 /// <para>
 /// Called by the dialog whenever a TriggerScriptNode is processed, and when the target of this node
 /// is this script. Basically, this method doesn't do anything but calling the <see cref="OnTriggered"/>
 /// event.
 /// </para>
 /// <para>
 /// This method is virtual, and thus overridable to enable you to create custom dialog triggers.
 /// </para>
 /// </summary>
 public virtual void Trigger()
 {
     if (OnTriggered != null)
     {
         OnTriggered.Invoke();
     }
 }
Example #4
0
    // Update is called once per frame
    private void OnTriggerEnter2D(Collider2D collision)
    {
        Debug.Log(
            message: name + " end point area reached at: " + transform.position.ToString());

        if (collision.tag.Equals("Player") || collision.transform.parent.tag.Equals("Player"))
        {
            OnTriggered?.Invoke();
        }
    }
Example #5
0
 public void ReceiveCharge(int amount)
 {
     CurrentCharge += amount;
     while (CurrentCharge >= ThresholdFinal)
     {
         OnTriggered?.Invoke();
         OwningEntity.RuneActionTriggered(Text());
         Perform();
         CurrentCharge -= ThresholdFinal;
     }
 }
Example #6
0
    private void FixedUpdate()
    {
        if (alarmEnabled)
        {
            // Extends lasers back to full length.
            for (int i = 0; i < laserInterpolants.Length; i++)
            {
                if (laserInterpolants[i] < 1f)
                {
                    laserInterpolants[i] = Mathf.Min(1f,
                                                     laserInterpolants[i] + restoreSpeed * Time.fixedDeltaTime);
                }
            }
            // Scan for players.
            bool suspiciousActorSeen = false;
            for (int i = 0; i < laserEnds.Length - 1; i += 2)
            {
                // Get the ray for each laser.
                Vector3 laserDirection = Vector3.Lerp(laserEnds[i].position, laserEnds[i + 1].position,
                                                      laserInterpolants[i / 2]);
                Ray laserRay = new Ray
                {
                    origin    = laserEnds[i].position,
                    direction = laserDirection - laserEnds[i].position
                };
                // Check the ray against each player.
                foreach (PlayerController actor in AlarmSingleton.SuspiciousActors)
                {
                    CapsuleCollider collider = actor.GetComponent <CapsuleCollider>();
                    // Run a raycast to see if the laser crosses the player.
                    if (collider.Raycast(laserRay, out RaycastHit hit, laserDirection.magnitude))
                    {
                        // Update the laser interpolant to reflect being intersected by the player.
                        laserInterpolants[i / 2] = Vector3.Distance(hit.point, laserEnds[i].position)
                                                   / Vector3.Distance(laserEnds[i].position, laserEnds[i + 1].position);

                        // Trigger event if this is the first actor seen
                        // and the alarm is not already in a triggered state.
                        suspiciousActorSeen = true;
                        if (!isCurrentlyAlarmed)
                        {
                            //alarmSource.Play();
                            isCurrentlyAlarmed = true;
                            OnTriggered?.Invoke(actor);
                        }
                        break;
                    }
                }
            }
            isCurrentlyAlarmed = suspiciousActorSeen;
        }
    }
Example #7
0
        /// <summary>
        /// Fires the Trigger
        /// </summary>
        public void Trigger()
        {
            if (!Triggered)
            {
                #if DEBUG
                Debug.Log(name + " Triggered");
                #endif

                OnTriggered?.Invoke();

                if (Application.isPlaying && TriggerOnce)
                {
                    Triggered = true;
                }
            }
        }
Example #8
0
 public void TripWireTriggeredCallback()
 {
     if (disableOnTriggered)
     {
         active = false;
     }
     //chance = 100;
     if (chance != 100)
     {
         // Less than 100% chance to trigger
         var r = new Random();
         var p = r.Next(100);
         if (p >= 100 - chance)
         {
             OnTriggered.Invoke(this); // Call event
         }
     }
     else
     {
         // always 100% chance to trigger
         OnTriggered.Invoke(this); // Call event
     }
 }
Example #9
0
    protected void Update()
    {
        if (Time.timeScale < 1f)
        {
            if (switchedOnAudio)
            {
                switchedOnAudio.pitch = audioSlowFactor;
            }
            if (switchedOffAudio)
            {
                switchedOffAudio.pitch = audioSlowFactor;
            }
            if (offToOnAudio)
            {
                offToOnAudio.pitch = audioSlowFactor;
            }
            if (onToOffAudio)
            {
                onToOffAudio.pitch = audioSlowFactor;
            }
        }

        else
        {
            if (switchedOnAudio)
            {
                switchedOnAudio.pitch = 1f;
            }
            if (switchedOffAudio)
            {
                switchedOffAudio.pitch = 1f;
            }
            if (offToOnAudio)
            {
                offToOnAudio.pitch = 1f;
            }
            if (onToOffAudio)
            {
                onToOffAudio.pitch = 1f;
            }
        }

        if (applyDelay)
        {
            timeElapsed += Time.deltaTime;

            if (isOn)
            {
                if (timeElapsed >= activationDelay)
                {
                    OnTriggered?.Invoke();
                    offToOnAudio?.Stop();
                    timeElapsed = 0f;
                    applyDelay  = false;
                }

                else if (offToOnAudio && !offToOnAudio.isPlaying)
                {
                    offToOnAudio?.Play();
                }
            }

            else if (timeElapsed >= deactivationDelay)
            {
                OnUntriggered?.Invoke();
                onToOffAudio?.Stop();
                timeElapsed = 0f;
                applyDelay  = false;
            }

            else if (onToOffAudio && !onToOffAudio.isPlaying)
            {
                onToOffAudio?.Play();
            }
        }
    }
Example #10
0
 /// <summary>
 /// Call the update trigger
 /// </summary>
 public void Trigger()
 {
     OnTriggered?.Invoke(this);
 }
Example #11
0
 protected virtual void ActionCompleted()
 {
     OnTriggered?.Invoke(this);
 }
Example #12
0
 private void OnTriggerEnter2D(Collider2D collision)
 {
     OnTriggered?.Invoke(collision.gameObject); //Alert any subscribers that something stepped on the trigger
 }
Example #13
0
 /// <summary>
 /// Force use the event with the given time
 /// </summary>
 public void ForceUse(SavedTime time)
 {
     OnTriggered?.Invoke(time);
 }
Example #14
0
 /// <summary>
 /// Force use the event with the current time
 /// </summary>
 public void ForceUse()
 {
     OnTriggered?.Invoke(MainClock.NowTime);
 }
Example #15
0
 /// <summary>
 /// When the event is triggered
 /// </summary>
 /// <param name="timeOfTrigger">Time of the trigger</param>
 protected void OnEventTrigger(SavedTime timeOfTrigger)
 {
     OnTriggered?.Invoke(timeOfTrigger);
 }
Example #16
0
 public void Trigger(TSender sender, TData data)
 {
     OnTriggered?.Invoke(sender, data);
 }
Example #17
0
 public void RaiseOnTriggered()
 {
     triggeredInFrame = Time.frameCount;
     OnTriggered?.Invoke(dclAction);
 }
Example #18
0
 protected void invokeTriggeredEvent(InteractionData interactionData, IImpactObject impactObject)
 {
     OnTriggered?.Invoke(interactionData, impactObject);
 }