From Valve Developer Community
Revision as of 07:16, 7 June 2020 by KalimandoEnd (talk | contribs) (Inputs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

haptic_relay is a point entity available in the following Source 2 engine games: Half-Life: Alyx Half-Life: Alyx.

Entity description

The haptic_relay is an entity which ostensibly has the power to trigger force-feedback in VR controllers based on its properties being similar to env_shake. It appears to share some attributes with logic_relay but requires additional testing for use.

To do: Test this entity for its intended uses and update this page with use-cases

Investigate: .hpt files in scripts/haptics, audio2haptic_inputkv.txt, and OnHandEvent input.


Source 2 Transform:

origin <coordinates>
The world space origin of the entity.
angles <angles>
The pitch, yaw, roll orientation of the entity.
scales <vector>
The x, y, z scales of the entity. Not all entities can use this.
Transform Locked <boolean>
Lock the transform at its current value, preveting the transform of the node from being modified.
Force Hidden <boolean>
Visually hides the entity from the viewports. The Outliner pane will still list hidden entities.
Editor Only <boolean>
Entity is only displayed in Hammer and will not appear in game.

Name <string>
The name that other entities refer to this entity by.

Misc Entity Scripts <string>
Name(s) of script files that are executed after all entities have spawned.

Frequency <integer>
Frequency of the haptic pulse (0 - 100) Default (50)

Amplitude <float>
Amplitude of haptic pulse (0.0 - 1.0) Default (0.5)

Duration <float>
Duration of the haptic pulse in seconds Default (0.1)


Fired in response to FireUser1 input
Fired in response to FireUser2 input
Fired in response to FireUser3 input
Fired in response to FireUser4 input
Fire when the entity is killed and removed from the game.



Execute a VScript file from disk, without file extension. The script contents are merged with the script scope of the receiving entity.

Execute a string of VScript source code in the scope of the entity receiving the input. String quotation may be needed when fired via console.

Execute a VScript function in the scope of the receiving entity.

Execute a VScript function from this entity's private script scope

Execute a VScript function from the global script scope

Removes this entity from the world.

Removes this entity and its children from the world.
Note.png Note: Entities already remove orphaned children upon being removed, but this input removes all children on the same frame, being marginally faster than Kill.

AddOutput <string>
Adds a keyvalue/output to this entity. It can be potentially very dangerous, use with care.
KV Format: <key> <value>
I/O Format: <output name> <targetname>:<inputname>:<parameter>:<delay>:<max times to fire, -1 means infinite>

FireUser1 to FireUser4
Fire the OnUser outputs; see User Inputs and Outputs.
Trigger the relay with an input that has the player as activator and HandID as value