Point posecontroller: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
(Use the fix/workaround templates, also the rounding/overflow bug needs clarification on what it actually affects, I've never heard of someone having to do this workaround)
(-added class hierarchy, cleanup)
Line 1: Line 1:
{{base point|point_posecontroller|since=Half-Life 2: Episode Two}} It controls a [[$poseparameter|pose parameter]] of a prop and cycles the pose clientside.
{{CD|CPoseController|file1=point_posecontroller.cpp}}
{{entity|type=e0|point_posecontroller|since=Half-Life 2: Episode Two}} It controls a [[$poseparameter|pose parameter]] of a prop and cycles the pose clientside.
{{note|The posecontroller resets the prop's default animations.}}
{{note|The posecontroller resets the prop's default animations.}}
{{bug|Using an invalid or non-existant Pose Parameter will crash the game.}}
{{bug|Using an invalid or non-existant Pose Parameter will crash the game.}}
{{code class|CPoseController|point_posecontroller.cpp}}
 
== Keyvalues ==
== Keyvalues ==
{{KV|Prop Name|string|Name of the prop to control.}}
{{KV Targetname}}
{{KV|Prop Name|intn=PropName|string|Name of the prop to control.}}
{{bugfix|This keyvalue does not receive [[instance]] fixups, making the entity mostly unusable inside instances.|Change the keyvalue type from <code>string</code> to <code>target_destination</code> in the [[FGD]].}}
{{bugfix|This keyvalue does not receive [[instance]] fixups, making the entity mostly unusable inside instances.|Change the keyvalue type from <code>string</code> to <code>target_destination</code> in the [[FGD]].}}
{{KV|Pose Parameter Name|string|Name of the pose parameter to control.}}
{{KV|Pose Parameter Name|intn=PoseParameterName|string|Name of the pose parameter to control.}}
{{KV|Pose Parameter Value|float|Normalized value for the pose parameter from 0.0 and 1.0 (maps to min and max range).}}
{{KV|Pose Parameter Value|intn=PoseValue|float|Normalized value for the pose parameter from 0.0 and 1.0 (maps to min and max range).}}
{{bug|<code>Pose Paramater Value</code> suffers from rounding or overflow errors.}}
{{bug|<code>Pose Paramater Value</code> suffers from rounding or overflow errors.}}
:{{clarify|What effect does this have?}}
:{{clarify|What effect does this have?}}
:{{workaround|Apparently, constantly setting a new value using <code>SetPoseValue</code> can be used as a workaround.}}
:{{workaround|Apparently, constantly setting a new value using <code>SetPoseValue</code> can be used as a workaround.}}
{{KV|Interpolation Time|float|Number of seconds (0.0 to 10.0) for client to match absolute pose values.}}
{{KV|Interpolation Time|intn=InterpolationTime|float|Number of seconds (0.0 to 10.0) for client to match absolute pose values.}}
{{bug|The value must have a trailing decimal (such as .0), or it will completely break the pose controller.}}
{{bug|The value must have a trailing decimal (such as .0), or it will completely break the pose controller.}}
{{KV|Should wrap from 0.0 to 1.0 when interpolating.|boolean|If set, wrap from 0.0 to 1.0 when interpolating.}}
{{KV|Should wrap from 0.0 to 1.0 when interpolating.|intn=InterpolationWrap|boolean|If set, wrap from 0.0 to 1.0 when interpolating.}}
{{KV|Cycle Frequency|float|Base cycles per second from -10.0 to 10.0.}}
{{KV|Cycle Frequency|intn=CycleFrequency|float|Base cycles per second from -10.0 to 10.0.}}
{{KV|Frequency Modulation Type|choices|Control the way the interpolation blends between the poses.}}
{{KV|Frequency Modulation Type|intn=FModulationType|choices|Control the way the interpolation blends between the poses.}}
:{| class=standard-table
:{| class=standard-table
! Value || Description
! Value || Description
Line 31: Line 33:
| <code>5</code> || Noise
| <code>5</code> || Noise
|}
|}
{{KV|Frequency Modulation Time Offset|float|Modulation time offset from -1.0f to 1.0.}}
{{KV|Frequency Modulation Time Offset|intn=FModTimeOffset|float|Modulation time offset from -1.0f to 1.0.}}
{{KV|Frequency Modulation Rate|float|Modulation cycles per second from -10.0f to 10.0.}}
{{KV|Frequency Modulation Rate|intn=FModRate|float|Modulation cycles per second from -10.0f to 10.0.}}
{{KV|Frequency Modulation Amplitude|float|Modulation extents from 0.0f to 10.0.}}
{{KV|Frequency Modulation Amplitude|intn=FModAmplitude|float|Modulation extents from 0.0f to 10.0.}}
{{KV BaseEntity}}


== Inputs ==
== Inputs ==
Line 47: Line 48:
{{IO|RandomizeFMod|Randomize the frequency modulation by an extremeness of 0.0 to 1.0.|param=float}}
{{IO|RandomizeFMod|Randomize the frequency modulation by an extremeness of 0.0 to 1.0.|param=float}}
{{IO|GetFMod|Outputs the current modulation settings in console.}} {{Not in FGD}}
{{IO|GetFMod|Outputs the current modulation settings in console.}} {{Not in FGD}}
{{I BaseEntity|prel4d=1}}
== Outputs ==
{{O BaseEntity|l4d=1}}

Revision as of 19:35, 31 July 2023

C++ Class hierarchy
CPoseController
CBaseEntity
C++ point_posecontroller.cpp

Template:Entity It controls a pose parameter of a prop and cycles the pose clientside.

Note.pngNote:The posecontroller resets the prop's default animations.
Icon-Bug.pngBug:Using an invalid or non-existant Pose Parameter will crash the game.  [todo tested in ?]

Keyvalues

Name (targetname) <string>[ Edit ]
The name that other entities refer to this entity by, via Inputs/Outputs or other keyvalues (e.g. parentname or target).
Also displayed in Hammer's 2D views and Entity Report.
See also:  Generic Keyvalues, Inputs and Outputs available to all entities

Prop Name (PropName) <string>
Name of the prop to control.
Icon-Bug.pngBug:This keyvalue does not receive instance fixups, making the entity mostly unusable inside instances.  [todo tested in ?]
Note.pngFix:Change the keyvalue type from string to target_destination in the FGD.
Pose Parameter Name (PoseParameterName) <string>
Name of the pose parameter to control.
Pose Parameter Value (PoseValue) <float>
Normalized value for the pose parameter from 0.0 and 1.0 (maps to min and max range).
Icon-Bug.pngBug:Pose Paramater Value suffers from rounding or overflow errors.  [todo tested in ?]
Clarify: What effect does this have?
PlacementTip.pngWorkaround:Apparently, constantly setting a new value using SetPoseValue can be used as a workaround.
Interpolation Time (InterpolationTime) <float>
Number of seconds (0.0 to 10.0) for client to match absolute pose values.
Icon-Bug.pngBug:The value must have a trailing decimal (such as .0), or it will completely break the pose controller.  [todo tested in ?]
Should wrap from 0.0 to 1.0 when interpolating. (InterpolationWrap) <boolean>
If set, wrap from 0.0 to 1.0 when interpolating.
Cycle Frequency (CycleFrequency) <float>
Base cycles per second from -10.0 to 10.0.
Frequency Modulation Type (FModulationType) <choices>
Control the way the interpolation blends between the poses.
Value Description
0 None
1 Sine
2 Square
3 Triangle
4 Sawtooth
5 Noise
Frequency Modulation Time Offset (FModTimeOffset) <float>
Modulation time offset from -1.0f to 1.0.
Frequency Modulation Rate (FModRate) <float>
Modulation cycles per second from -10.0f to 10.0.
Frequency Modulation Amplitude (FModAmplitude) <float>
Modulation extents from 0.0f to 10.0.

Inputs

SetPoseParameterName <stringRedirectInput/string>
Sets the pose parameter to control.
SetPoseValue <floatRedirectInput/float>
Set the pose parameter to a normalized value between 0.0 and 1.0 (maps to min and max range).
SetInterpolationTime <floatRedirectInput/float>
Set the interpolation time to a number of seconds between 0.0 and 10.0.
SetCycleFrequency <floatRedirectInput/float>
Set the pose parameter's base cycles per second from -10.0f to 10.0.
SetFModType <integerRedirectInput/integer>
Set the type of frequency modulation.
SetFModTimeOffset <floatRedirectInput/float>
Set the modulation time offset from -1.0f to 1.0.
SetFModRate <floatRedirectInput/float>
Set the modulation cycles per second from -10.0f to 10.0.
SetFModAmplitude <floatRedirectInput/float>
Set the modulation extents from 0.0f to 10.0.
RandomizeFMod <floatRedirectInput/float>
Randomize the frequency modulation by an extremeness of 0.0 to 1.0.
GetFMod
Outputs the current modulation settings in console. !FGD