private void Update() { switch (Mode) { case TriggerMode.Never: break; case TriggerMode.Once: if (!ScenarioTriggerManager.IsTriggered(this)) { ScenarioInterpreter.Instance.EnqueueScript(Script); } break; case TriggerMode.EveryOnceInScene: case TriggerMode.Always: ScenarioInterpreter.Instance.EnqueueScript(Script); break; default: Debug.LogError("Unknown trigger mode : " + Mode); break; } Destroy(gameObject); }
private void OnTriggerEnter2D(Collider2D collision) { if (InteractableMask.Contains(collision.gameObject.layer)) { if (lastContact + MinimumTriggerInterval > Time.time) { return; } else { lastContact = Time.time; } switch (Mode) { case TriggerMode.Never: break; case TriggerMode.Once: if (!ScenarioTriggerManager.IsTriggered(this)) { ScenarioInterpreter.Instance.EnqueueScript(Script); } Destroy(this); break; case TriggerMode.EveryOnceInScene: ScenarioInterpreter.Instance.EnqueueScript(Script); Destroy(this); break; case TriggerMode.Always: ScenarioInterpreter.Instance.EnqueueScript(Script); break; default: Debug.LogError("Unknown trigger mode : " + Mode); break; } } }