Skip to main content

Network Trigger System

1. Overview

The Network Trigger System is a fundamental component of the HoloMIT networking architecture. It allows developers to invoke events across all connected clients (RPC-like behavior) by using the EventManagerController.

Each trigger is identified by a unique NetworkId (inherited from NetworkIdBehaviour), ensuring that when a trigger is activated on one client, the correct object on all other clients reacts accordingly.


2. NetworkTrigger (Base Component)

The NetworkTrigger is the simplest form of networked event. It fires a UnityEvent with no parameters across the network.

2.1. Inspector Reference

Figure 1: The NetworkTrigger component. Use the "OnTrigger" UnityEvent to link local logic.

Properties

  • OnTrigger (UnityEvent): The event that will be executed locally and replicated on all other clients.

2.2. Public API

  • public virtual void Trigger(): The main method to activate the trigger. Call this from code or UnityEvents to broadcast the action.

3. Typed Triggers (Data Propagation)

For cases where you need to send specific data along with the trigger (e.g., a switch state, a score, or a message), HoloMIT provides several specialized triggers:

3.1. NetworkBoolTrigger

Used for binary states (On/Off, True/False).

  • Event: UnityEvent<bool> OnTrigger
  • Method: Trigger(bool _data)

3.2. NetworkIntTrigger

Used for numeric values (IDs, counters, levels).

  • Event: UnityEvent<int> OnTrigger
  • Method: Trigger(int _data) or Trigger() (uses the Data field defined in inspector).

3.3. NetworkStringTrigger

Used for text-based data.

  • Event: UnityEvent<string> OnTrigger
  • Method: Trigger(string _data) or Trigger().

3.4. NetworkByteTrigger

Used for raw data transmission (byte arrays).

  • Event: UnityEvent<byte[]> OnTrigger
  • Method: Trigger(byte[] _data) or Trigger().

4. How to use (Step-by-Step)

  1. Attach the desired trigger component (e.g., NetworkBoolTrigger) to a GameObject.
  2. Ensure the GameObject has a unique Network ID (managed by NetworkIdBehaviour).
  3. In the Inspector, add a listener to the OnTrigger event.
  4. To fire the trigger from another script:
    public NetworkBoolTrigger myTrigger;

    void ToggleState(bool state) {
    myTrigger.Trigger(state); // This will execute on ALL clients
    }

5. Common Pitfalls

  • Missing NetworkId: Triggers rely on NetworkId to find their counterpart on other clients. If two objects have the same ID or no ID, the trigger will fail or target the wrong object.
  • Registration: Triggers automatically register their message types in Awake(). If you instantiate a trigger and try to use it immediately, ensure Awake has finished.