func_rotating
		
		
		
		Jump to navigation
		Jump to search
		
|  Class hierarchy | 
|---|
| CFuncRotating | 
|  bmodels.cpp | 
func_rotating  is a   brush entity  available in all  Source games.
 Source games.
 Note:
Note: This entity did not rotate visually until the 19/12/2018 patch, due to bugged implementation of the
 This entity did not rotate visually until the 19/12/2018 patch, due to bugged implementation of the Client-side rotation spawnflag. Bug:Always fire the
Bug:Always fire the Stop input on this entity before killing it, otherwise looping sounds may continue playing forever!  [todo tested in ?] Bug:The maximum degrees this angle can turn is 360000 degrees, at which it stops rotating.
Bug:The maximum degrees this angle can turn is 360000 degrees, at which it stops rotating.
 Workaround:This can be remedied by scripting the entity to pause rotating for a short period of time.
Workaround:This can be remedied by scripting the entity to pause rotating for a short period of time.Entity Description
It is used to create rotating brushes. Compare with func_door_rotating.
Friction Explanation & Formula
Fan friction may be a little tricky to understand. Below is an explanation of how it works.
If Hammer has the fanfriction key set to 0 and the game spawns the entity, code sets it to 1 so it doesn't divide by zero.
Friction = fanfriction key / 100
| Key | Hammer Value | Code Value | 
|---|---|---|
| fanfriction | 100 | 1 | 
| fanfriction | 50 | 0.5 | 
| fanfriction | 0/1 | 0.01 | 
Note: These formulas get called every 0.1 seconds.
Purpose:
Think function: Accelerates a func_rotating to a higher angular velocity.
new_speed = fabs( current_speed ) + 0.2 * maxspeed * fanfriction;
Purpose: Decelerates the rotator from a higher speed to a lower one.
new_speed = fabs( current_speed ) - 0.1 * maxspeed * fanfriction;
Conclusion:
- A higher fanfrictionvalue will accelerate/deaccelerate faster.
- A lower fanfrictionvalue will accelerate/deaccelerate slower.
Keyvalues
 Note:For Keyvalues and Inputs affecting brush rendering, see Brush entity/Rendering related keyvalues and inputs
Note:For Keyvalues and Inputs affecting brush rendering, see Brush entity/Rendering related keyvalues and inputs
- Name (targetname) <string>[ Edit ]
- The name that other entities refer to this entity by, via Inputs/Outputs or other keyvalues (e.g. parentnameortarget).
 Also displayed in Hammer's 2D views and Entity Report.See also: Generic Keyvalues, Inputs and Outputs available to all entities
- Max Rotation Speed (maxspeed) <integer>
- The maximum rotation speed of the brushes, in degrees per second. Seems to be limited to a number around 2000, after which the rotational speed ignores the last remaining digits (e.g., 2500=250).
- Friction (0 - 100%) (fanfriction) <integer>
- The amount of rotational friction. Value must be between 0 and 100 %. The lower the friction is, the slower it spins up and spins down. This is the opposite of how it would work in real life.
- Rotating sound WAV (message) <sound>
- Sound to play while rotating. Bug:Always fire the Bug:Always fire theStopinput on this entity before killing it, otherwise looping sounds may continue playing forever! [todo tested in ?]
- Volume (10 = loudest) (volume) <integer>
- The volume of the rotation sound.
- Blocking Damage (dmg) <integer>
- Damage done to any entity that blocks the rotation, per frame.
- Solid Type (solidbsp) <choices>
- Brush solidity type
- 0 : VPhysics
- 1 : BSP
 
Flags
- Start ON : [1]
- Reverse Direction : [2]
- X Axis : [4]
- If enabled, the entity will spin at the X Axis.
- Y Axis : [8]
- If enabled, the entity spin at the Y Axis.
- Acc/Dcc : [16]
- If enabled, the entity will accelerate and decelerate from maximum speed based on the Friction property.
- Fan Pain : [32]
- With this enabled, the player will be hurt when coming into contact with the brush.
- Not Solid : [64]
- Small Sound Radius : [128]
- Use ATTN_IDLE (60dB).
- Medium Sound Radius : [256]
- Use ATTN_STATIC (~67dB).
- Large Sound Radius : [512]
- Use ATTN_NORM (~75dB). If the other two options are unset, this is used.
- Client-side Animation : [1024] (in all games since  ) )
Inputs
- SetSpeed <float>
- Set the speed as a ratio of the specified Max Rotation Speed, where 0 is stopped and 1 is the Max Rotation Speed. Negative values rotate backwards.
 If you want to set by degrees per second instead, first fire "Addoutput - Maxspeed X" to this entity, followed by "Start" with a delay of 0.01 seconds.
- Start
- Start the rotator rotating.
- Stop
- Stop the rotator from rotating.
- StopAtStartPos
- Stopthe rotator from rotating when it gets around to the start position again (on its rotation axis). If the speed is greater than 100 degrees per second, slows down to 100 degrees per second and spins for one extra revolution before stopping.
- StartForward
- Start the rotator rotating forward at maximum speed.
- StartBackward
- Start the rotator rotating backward at maximum speed.
- Toggle
- Toggle the rotator between rotating and not rotating.
- Reverse
- Reverse the direction of rotation of the rotator, preserving the current speed.
- SnapToStartPos   (in all games since  ) )
- Snap to the initial position and stop moving.
- GetSpeed   (in all games since  ) )
- Causes the func_rotatingto fire itsOnGetSpeedoutput with its current speed.
Outputs
- OnGetSpeed  <integer> (in all games since  ) )
- Fired when the GetSpeedinput is called. The current speed of thefunc_rotatingis passed with this output.

