After figuring this out I found the two other workarounds, but I think mine is cleaner and more streamlined. It has only one extra entity (no matter how many rotators you want) and has no clipping/solidity issues.
Basic functionality:
Make your rotating entity the neglected oddball momentary_rot_button. Set the speed to what you need, and set the distance to a multiple of 360, this is important for making the rotation appear seamless. For purposes of of I/O efficiency, I recommend making the distance roughly 10 times the speed so that it takes around 10 seconds for it to complete it's distance cycle. Give the m_r_b the following:
OUTPUT|TARGET|INPUT
OnFullyClosed|rotate_relay|Trigger
Create a logic_relay and name it rotate_relay. Give it the following:
OUTPUT|TARGET|INPUT|PARAMETER|DELAY
OnTrigger|!activator|SetPositionImmediately|0.0|0.00
OnTrigger|!activator|SetPosition|1.0|0.01
OnSpawn|momentary_rot_button|SetPosition|1.0|Also enable the Allow fast retrigger flag on the relay.
The last output will appear as a broken output in Hammer, but in-game it will be sent to every m_r_b in the map without having to name them.
Stopping & restarting:
If you wish to stop an m_r_b once started send it the following sequence:
INPUT|DELAY
Lock|0.00
Unlock|0.01The lock will stop it from moving and the unlock will allow it to be restarted again.
To restart it send:
INPUT|PARAMETER
SetPosition|1.0
Extra notes:
To make an m_r_b rotate in the opposite direction, use a negative distance. The start direction key does not appear to do anything.
If you want to individually control multiple m_r_b obviously you will need to name them, but leave the logic_relay as it is, !activator will reply to whichever entity called upon the relay.
Basic functionality:
Make your rotating entity the neglected oddball momentary_rot_button. Set the speed to what you need, and set the distance to a multiple of 360, this is important for making the rotation appear seamless. For purposes of of I/O efficiency, I recommend making the distance roughly 10 times the speed so that it takes around 10 seconds for it to complete it's distance cycle. Give the m_r_b the following:
OnFullyClosed|rotate_relay|Trigger
Create a logic_relay and name it rotate_relay. Give it the following:
OnTrigger|!activator|SetPositionImmediately|0.0|0.00
OnTrigger|!activator|SetPosition|1.0|0.01
OnSpawn|momentary_rot_button|SetPosition|1.0|
The last output will appear as a broken output in Hammer, but in-game it will be sent to every m_r_b in the map without having to name them.
Stopping & restarting:
If you wish to stop an m_r_b once started send it the following sequence:
Lock|0.00
Unlock|0.01
To restart it send:
SetPosition|1.0
Extra notes:
To make an m_r_b rotate in the opposite direction, use a negative distance. The start direction key does not appear to do anything.
If you want to individually control multiple m_r_b obviously you will need to name them, but leave the logic_relay as it is, !activator will reply to whichever entity called upon the relay.
Last edited: