Pixotope Event System
The Pixotope Event System provides a robust event-handling framework.
It allows a quick setup for the triggering of Unreal blueprints and animations to achieve whatever effect is desired, creating repeatable, deterministic actions. This works by means of firing off actions called on a list of cues.
It supports direct, remote, or pre-programmed timecode-driven operation, with all action/cue organization and event handling, driven through an intuitive and flexible master blueprint.
Early versions of the Pixotope Event System have been used in high-profile productions like Super Bowl, Eurovision, League of Legends World Championship, and others.
![](../../__attachments/3756916904/Pixotope%20Event%20System%20-%20Pixotope%20Event%20System.jpg?inst-v=9a48e7bf-6403-4094-a858-ffe80445b919)
Academy Tutorial - Pixotope Event System
Learn how to set up the Pixotope Event System
Preparation
Add the Pixotope Event System content to your project
Using the Pixotope Event System in a project will inherently alter the imported assets. As a result, you should always use a fresh copy of the content for every new project.
Click on “Add/Import” in the Content Browser
Select “Pixotope Event System” from Pixotope > Add Pixotope Content
The content is copied into your project
Define Cues and Actions
Cues represent distinct segments of a production on which actions are executed. Blueprints and level sequences can then be set up to listen to specific Cues and run their triggered Action logic.
The Event System allows you to define any number of cues and allows you to extend the included default actions.
Example
Our production has a fireworks segment. For this, we define a Cue called "Fireworks". The blueprint handling the particle animation needs to be set up to react to all default Actions and listen to the "Fireworks".
On the IN-Action it starts slow, ramping-up the fireworks display
The OUT-Action ends the fireworks with a final blast
The ON and OFF-Actions are set up as fail-safes and for testing/debugging where the particles immediately jump to a full ON/OFF state
Define Cues
Cues are stored in the ECues enumerator.
Open the ECues enumerator
Edit the display name and description based on your production segments
Add more items if needed
Define additional Actions
Actions are stored in the EAction enumerator. The Pixotope Event System comes with the following default actions.
Default actions
IN - Trigger an IN-transition and end in the ON state
OUT - Trigger an OUT-transition and end in the OFF state
ON - Go instantly to the ON state
OFF - Go instantly to the OFF state
The default actions cover most use cases. However, should the project require more actions do the following:
Open the EActions enumerator list
Add more Actions
Note: Every action needs a corresponding function in the BP_EventActor.Open the BP_EventActor
Duplicate one of the functions of the default actions
Update the name of the new function to the one of the action
Prepare blueprints
In order for the Event System to index your blueprints, they will first need to be reparented to the BP_EventActor.
Reparent blueprints
Open the blueprints which should be triggered by the event system
Click on "Reparent blueprint" in the File menu
Select the "BP_EventActor"
Set Cues to listen to
Specify which Cues each blueprint should listen to.
Go to the "Details" panel in your blueprint
Assign one or multiple Cues this blueprint should listen to
or on a per-instance basis, directly in our scene
Add blueprint logic
With BP_EventActor assigned as the parent, we can now add the inherited Action events, and wire them into the desired blueprint logic.
It is good practice to ensure that calling any of the available Actions, at any time, results in replicable and correct behavior.
Add all Actions to the blueprint
Add the desired blueprint logic to it
Optionally use a "Switch on ECues" node to execute different Action logic depending on the sent Cue
Set triggers
Once all our Action logic has been wired up and Cues are assigned, we are ready to set up triggers.
Add BP_Master to the level
BP_Master is the beating heart of the event system. It is responsible for rounding up all actors that belong to the system and ensure that actions are called correctly on them.
Drag BP_Master into the level
Use manual/remote event triggers
Open the BP_Master blueprint
Add a Custom Event and give it a distinct name
Connect a Cue Action and select which Cue Action should be triggered
Repeat these steps for all events which need to be triggered
Save BP_Master
Set up manual event triggers
For every Cue Action, a debug button on BP_Master is added.
This can be disabled by unchecking "Call in Editor" on the Details panel of the Cue Action.
Set up remote event triggers
With the Custom Events set up in BP_Master, they can be triggered using the Control Panel.
In Director, open an existing or create a new control panel
Add a trigger widget
As a target and select one of the created events on BP_Master
Learn more about Creating a custom control panel
Test the event triggers
Enter Play or LIVE mode
Trigger the events using the debug buttons or the control panel
Use timecode triggers
The Pixotope Event System also supports automatic triggering with timecode (LTC).
Set up timecode (LTC)
Linear Timecode (LTC) is a clock stream that can be supplied in a number of ways. We can use it to facilitate the automated execution of Cue Actions.
We receive an LTC signal through the video card, either
as analog audio on a breakout cable OR
via an SDI input
Set up timecode event triggers
For this, we utilize the BP_TimeCodeTrigger actor which is also used if we wish to trigger Level Sequences directly.
For Cue Action events on blueprints
BP_TimeCodeTrigger acts as a trigger source and sends a Cue Action call to BP_Master. This then gives the exact same result as if the Cue Action was triggered manually.
Drag a BP_TimeCodeTrigger into your scene
Check "Run Event" and set which Cue Action it should trigger
Set the timecode at which the Cue Action should be triggered
Check the "Live" checkbox to enable the trigger
For level sequences
Drag a BP_TimeCodeTrigger into your scene
Select the Level Sequence which should be triggered and leave "Run Event" unchecked
Choose whether the sequence should be looped
Set start and stop timing overrides, letting you “slip” the level sequence without having to edit the actual sequence asset
Set the timecode at which the Cue Action should be triggered
Check the "Live" checkbox to enable the trigger
More options
Timecode
Most shows tend to start each segment at an arbitrary start time, usually a whole hour, so remember to offset your start time by that value.
Make sure the timecode’s FPS (LTC) is set to the actual frame rate of the production - a timecode trigger set to happen at frame 50, will never be executed if the inbound timecode is at 25 frames per second!
“Display Timecode” simply plays a text element directly above the blueprint, showing the current TC. Excellent for debugging and checking timings.
Live
By default, all BP_TimeCodeTriggers are set to “Standby”. This means that they will not trigger if their timecode Cue is hit. This is useful in a live production environment, where we do not wish to accidentally have graphics brought up too early due to, for instance, an audio check. “Live” makes the trigger start listening to timecode, and will make it execute once the trigger timing is hit.
Mock Timecode
If you are working on the event cues, and do not have access to live timecode, we have a handy alternative in Mock Timecode. This is not an actual live signal, but rather a clock that starts ticking from a predefined starting point fired off manually or at beginPlay.
Useful for testing individual Cues without needing an external trigger source. Can be enabled or disabled through BP_Master, and made to default to active or idle on BeginPlay.
Debug buttons
The debug buttons/events can be used to set live/standby state, start/stop mock timecode, and force a trigger.
For setting project-wide live/standby, or doing other wide calls, please use the relevant events in BP_Master.
Debug timecode triggers
BP_TimeCodeDebug allows you to print timecode to the log, as well as on-screen, and is primarily used to ensure that timecode is actually running when you go live in a production.
We recommend having one of these in your scene. It will need to be connected to a TimeCodeTrigger actor to function correctly, and will display color-coded TC on-screen if “Print TC” is enabled, and live/mock timecode is being received.
Green - Level Sequence playing
Cyan - Standby mode
Red - Orange - Live, waiting on a trigger