Generic Operator Options

From Valve Developer Community
Jump to navigation Jump to search
Dead End - Icon.png
This article has no Wikipedia icon links to other VDC articles. Please help improve this article by adding links Wikipedia icon that are relevant to the context within the existing text.
January 2024

Every operator has options that control whether the operator is acting upon the particles. During fade times the strength of the effect will fade. While for many operators this will control the amount that it's affecting the particles, for some this concept doesn't make sense and simply acts as a binary on/off.

Fade times are not per-particle, but rather a global time for the operator as a whole. When oscillate is -not- set, fade times are in raw seconds from the creation time of the particle system.

However, if oscillate is set, then the fade in/out times become -proportional- to the time, in seconds, set for the oscillation. For example, if the operator fade oscillate is set to 5 seconds, a fade in time of .2 (20%) will correspond to 1 second, while a fade out time of .8 (80%) will happen at the 4 second mark of the 5 second oscillation. This will then loop, with the operator fading back in 20% into the next 5 second loop.

operator start fadein [float]
When the operator should begin to fade in. Until this point is hit, the operator will be entirely off.
operator end fadein [float]
When the operator should end to fade in. From the start fade in until the end fade in, the strength of the operator will fade in linearly. For some operators, this may be entirely binary on/off depending on how the operator works. Once the end fadein time has passed, the operator will be fully on.
operator start fadeout [float]
When the operator should start to fade out. From the start fade out until the end fade out, the strength of the operator will fade out linearly. For some operators, this may be entirely binary on/off depending on how the operator works.
operator end fadeout [float]
When the operator should end the fade out. After this point is hit, the operator will be entirely off.
operator fade oscillate [float]
The oscillation time of the operator. This is in seconds. If oscillate is set, then the fade in/out times become -proportional- to the time, in seconds, set for the oscillation. For example, if the operator fade oscillate is set to 5 seconds, a fade in time of .2 (20%) will correspond to 1 second, while a fade out time of .8 (80%) will happen at the 4 second mark of the 5 second oscillation. This will then loop, with the operator fading back in 20% into the next 5 second loop.
operator time offset seed [integer]
operator time offset min [float]
operator time offset max [float]
operator time scale seed [integer]
operator time scale min [float]
operator time scale max [float]
operator time strength random scale max[float]
operator strength scale seed [integer]
operator strength random scale min[float]
operator strength random scale max[float]
operator strength scale control point [integer]
If specified ( -1 disables ) this will scale the strength of the operator by the X component of the specified control point. While not all operators allow for non-binary on/off scaling, many, such as ramps, can have their rates scaled by the value of the CP. All other operators can be toggled using this method. This allows for sets of operators (including renderers, forces, initializers, etc.) to be turned on and off via control points.
operator end cap state [integer]
End Cap State controls how the operator acts when the effect is stopped and playing its "end cap." This allows an entirely different set of operators or children to be contained within a single effect and when the effect is stopped, playing its end cap, those operators or children can be toggled. This allows for the effect to go away in some fashion that is visually desirable rather than simple stopping emission or destroying all the particles immediately.
Default state for end cap is -1. This means the operator will always run regardless of endcap state.
end cap state 0 means that if the system is in the end cap, the operator will shut off.
end cap state 1 means that if the system is in the end cap, the operator will be turned on, but it will not run during the normal emission state of the effect.
Using end caps to set up duplicate sets of operators with different options that swap on/off when the effect is stopped allows for a lot of effects that can emit for a non-predefined period of time, but have some specific authored effect when they go away. This is often used for projectiles to contain explosions and such within the primary effect or any other manner of effects where the timing is dictated by game code and not by the effect itself.
Note that the other place where endcap settings is seen is in children. A child, and thereby its nested children can be marked as an EndCap Effect. This means that the child will not spawn when the rest of the system does, but rather when the endcap is toggled. Also, all timing offsets for that child, and it's children, will be zeroed at the endcap time, not at the original system creation time. An often used practical application of this is including both a projectile and it's resulting explosion within a single effect, the explosion being an endcap effect. When the projectile effect is ended by reaching its target, the endcap plays the explosion.
There is also an operator that allows the effect to stop itself after a predetermined time, or a time as specified by a control point. Working in this way allows for setting up an effect with complicated end behaviors where the timing is likely to change. As an author of the system, you can easily tweak you end timing via a single operator, rather than touching a bunch of operators changing fade times, emission times, delays, etc.
operator help and notes [string]
If the help button is clicked on, it will open up a browser pointed to the wiki page for the operator. Notes can be entered into the field for comments on why some particular operator is being used or how. Care should be taken when copying operators or effects that these comments stay current. Also, text will bloat file size, so limit it to necessary info.
operator enabled [bool]
If this is disabled, the operator will never run. Useful for quickly toggling on/off options for testing or tweaking effects.
run for killed parent particles [bool]
Initializers have a specific operator option which toggles whether initializers should run when particles are being created from killed parent particles. When using emit options to emit for each killed particle, these initializers can be applied as desired.