Haptic relay: Difference between revisions
Jump to navigation
Jump to search
KalimandoEnd (talk | contribs) (Page Creation) |
m (Substituted IO templates) |
||
(4 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
{{ | {{this is a|point entity|name=haptic_relay|game=Half-Life: Alyx|engine=Source 2}} | ||
==Entity description== | ==Entity description== | ||
Line 5: | Line 5: | ||
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. | 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. | ||
{{todo|Test this entity for its intended uses and update this page with more use-cases}} | |||
{{todo|Test this entity for its intended uses and update this page with use-cases}} | Some potential use-cases are: | ||
* scripted events with explosions/impacts where vibrating the controller may enhance immersion | |||
<strong style="color:#e65c00">Investigate:{{#if: {{{1|}}} | : }}</strong> .hpt files in scripts/haptics, audio2haptic_inputkv.txt, and OnHandEvent input. | <strong style="color:#e65c00">Investigate:{{#if: {{{1|}}} | : }}</strong> .hpt files in scripts/haptics, audio2haptic_inputkv.txt, and OnHandEvent input. | ||
Line 18: | Line 19: | ||
{{KV|Frequency|integer|Frequency of the haptic pulse (0 - 100) Default (50)}} | {{KV|Frequency|integer|Frequency of the haptic pulse (0 - 100) Default (50)}} | ||
{{Bug|tested={{hla}}|It doesn't matter what frequency is set, all values have the same behavior.}} | |||
{{KV|Amplitude|float|Amplitude of haptic pulse (0.0 - 1.0) Default (0.5)}} | {{KV|Amplitude|float|Amplitude of haptic pulse (0.0 - 1.0) Default (0.5)}} | ||
{{Bug|tested={{hla}}|Setting amplitude to any value besides 1 results in the haptic_relay not vibrating the controllers at all. For a weaker haptic pulse, you can send a ApplyContinuousHapticPulse input to !player with a parameter override of 1.}} | |||
{{KV|Duration|float|Duration of the haptic pulse in seconds Default (0.1)}} | {{KV|Duration|float|Duration of the haptic pulse in seconds Default (0.1)}} | ||
{{Bug|tested={{hla}}|The duration seems to be the same no matter what value is set.}} | |||
== Outputs == | == Outputs == | ||
{{ | {{O|OnUser1|Fired in response to FireUser1 input}} | ||
{{ | {{O|OnUser2|Fired in response to FireUser2 input}} | ||
{{ | {{O|OnUser3|Fired in response to FireUser3 input}} | ||
{{ | {{O|OnUser4|Fired in response to FireUser4 input}} | ||
{{ | {{O|OnKilled|Fire when the entity is killed and removed from the game.}} | ||
==Inputs== | ==Inputs== | ||
{{ | {{I ATargetname}} | ||
{{I|OnHandEvent|Trigger the relay with an input that has the player as activator and HandID as value}} | |||
{{ | |||
Latest revision as of 10:57, 21 April 2025
haptic_relay
is a point entity available in 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.
Todo: Test this entity for its intended uses and update this page with more use-cases
Some potential use-cases are:
- scripted events with explosions/impacts where vibrating the controller may enhance immersion
Investigate: .hpt files in scripts/haptics, audio2haptic_inputkv.txt, and OnHandEvent input.
Properties
Source 2 Transform:
- Origin (origin) <coordinates>
- The world space origin of the entity.
- Angles (angles) <angles>
- The pitch, yaw, roll orientation of the entity.
- Scale (scales) <vector>
- The x, y, z scales of the entity. Not all entities can use this.
- Transform Locked (transformLocked) <boolean>
- Lock the transform at its current value, preventing the transform of the node from being modified. Only applies within Hammer.
- Force Hidden (force_hidden) <boolean>
- Visually hides the entity from the viewports. The Outliner pane will still list hidden entities.
- Editor Only (editorOnly) <boolean>
- Entity is only displayed in Hammer and will not appear in game.
- Misc Entity Scripts ([todo internal name (i)]) <string>
- Name(s) of script files that are executed after all entities have spawned.
Outputs
- OnUser1
- Fired in response to FireUser1 input
- OnUser2
- Fired in response to FireUser2 input
- OnUser3
- Fired in response to FireUser3 input
- OnUser4
- Fired in response to FireUser4 input
- OnKilled
- Fire when the entity is killed and removed from the game.
Inputs
AlyxTargetName:
- RunScriptFile
- Execute a VScript file from disk, without file extension. The script contents are merged with the script scope of the receiving entity.
- RunScriptCode
- 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.
- CallScriptFunction
- Execute a VScript function in the scope of the receiving entity.
- CallPrivateScriptFunction
- Execute a VScript function from this entity's private script scope
- CallGlobalScriptFunction
- Execute a VScript function from the global script scope
- Kill
- Removes this entity from the world.
- KillHierarchy
- Removes this entity and its children from the world.
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.
- OnHandEvent
- Trigger the relay with an input that has the player as activator and HandID as value