Haptic relay: Difference between revisions
		
		
		
		
		
		Jump to navigation
		Jump to search
		
				
		
		
	
KalimandoEnd (talk | contribs) m (→Inputs)  | 
				m (Substituted IO templates)  | 
				||
| (3 intermediate revisions by 2 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 ATargetname}}  | ||
{{  | {{I|OnHandEvent|Trigger the relay with an input that has the player as activator and HandID as value}}  | ||
Latest revision as of 09: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 
OnUseroutputs; see User Inputs and Outputs. 
- OnHandEvent
 - Trigger the relay with an input that has the player as activator and HandID as value