Skip to content
Snippets Groups Projects
Select Git revision
  • 0b7180ff33be9868f870418acd67c4443309e570
  • master default
  • JS-based-scroll-rendering
  • Paul_Marius_Level
  • Paul_Marius_2
  • Paul_Marius
  • Andi_Mark
  • be-UnityWebView
  • gitignoreFrameitServer
  • ZimmerBSc
  • Bugfix_StageLoading
  • stages
  • MAZIFAU_Experimental
  • tsc/coneworld
  • tsc/fact-interaction
  • marcel
  • MaZiFAU_TopSort
  • mergeHelper
  • zwischenSpeichern
  • tempAndrToMaster
  • SebBranch
  • 3.0
  • v2.1
  • v2.0
  • v1.0
25 results

TimeStop.cs.meta

Blame
  • ActivateTrigger.cs 3.39 KiB
    using System;
    using UnityEngine;
    using Object = UnityEngine.Object;
    
    namespace UnityStandardAssets.Utility
    {
        public class ActivateTrigger : MonoBehaviour
        {
            // A multi-purpose script which causes an action to occur when
            // a trigger collider is entered.
            public enum Mode
            {
                Trigger = 0,    // Just broadcast the action on to the target
                Replace = 1,    // replace target with source
                Activate = 2,   // Activate the target GameObject
                Enable = 3,     // Enable a component
                Animate = 4,    // Start animation on target
                Deactivate = 5  // Decativate target GameObject
            }
    
            public Mode action = Mode.Activate;         // The action to accomplish
            public Object target;                       // The game object to affect. If none, the trigger work on this game object
            public GameObject source;
            public int triggerCount = 1;
            public bool repeatTrigger = false;
    
    
            private void DoActivateTrigger()
            {
                triggerCount--;
    
                if (triggerCount == 0 || repeatTrigger)
                {
                    Object currentTarget = target ?? gameObject;
                    Behaviour targetBehaviour = currentTarget as Behaviour;
                    GameObject targetGameObject = currentTarget as GameObject;
                    if (targetBehaviour != null)
                    {
                        targetGameObject = targetBehaviour.gameObject;
                    }
    
                    switch (action)
                    {
                        case Mode.Trigger:
                            if (targetGameObject != null)
                            {
                                targetGameObject.BroadcastMessage("DoActivateTrigger");
                            }
                            break;
                        case Mode.Replace:
                            if (source != null)
                            {
                                if (targetGameObject != null)
                                {
                                    Instantiate(source, targetGameObject.transform.position,
                                                targetGameObject.transform.rotation);
                                    DestroyObject(targetGameObject);
                                }
                            }
                            break;
                        case Mode.Activate:
                            if (targetGameObject != null)
                            {
                                targetGameObject.SetActive(true);
                            }
                            break;
                        case Mode.Enable:
                            if (targetBehaviour != null)
                            {
                                targetBehaviour.enabled = true;
                            }
                            break;
                        case Mode.Animate:
                            if (targetGameObject != null)
                            {
                                targetGameObject.GetComponent<Animation>().Play();
                            }
                            break;
                        case Mode.Deactivate:
                            if (targetGameObject != null)
                            {
                                targetGameObject.SetActive(false);
                            }
                            break;
                    }
                }
            }
    
    
            private void OnTriggerEnter(Collider other)
            {
                DoActivateTrigger();
            }
        }
    }