func_door_rotating

From Valve Developer Community
Revision as of 18:51, 22 April 2017 by SunnyOst (talk | contribs) (Axis)

Jump to: navigation, search

func_door_rotating is a brush entity available in all Source games.

Entity description

It creates a rotating brush that can be "opened" by players or NPCs.

Note:This entity exists to handle unusual shapes and sizes of door. For everyday doors, use prop_door_rotating.
Tip:It's possible to use nodraw to make the brush invisible and then parent a prop_dynamic of your choice to it.

Notes

Axis

The func_door_rotating entity can only rotate around either the x, y or z axis and no combination of the two other than x and y. By default, the entity is set to rotate on the Z-axis and can be changed through altering the flags section of the object properties.

Note:The axis can be changed to a different one, by first aligning the door to the chosen world axis in-editor, then using "angles" keyvalue to set the door to a preferred rotation(result is only visible in-game). Doesn't work if part of an instance. To do: Check if this works anywhere other than Portal 2 Editor, on any axis other than x.

Rotation Direction: A func_door_rotating opens clockwise by default.

Setting the Origin

The point of rotation can be changed through the alteration of the entities origin. The origin sets which point on the plane of movement the object will rotate through, think of it as a hinge for a door. With the show helpers option enabled in Hammer, the origin will appear as a small white circle in the center of the entity that can be dragged to a new location.

Example

Here in the 3D view we have a brush we selected, 1, that is tied to the func_door_rotating entity. We want it to rotate downward to land in position 2, bridging the gap between the two ledges. To do this we need to alter the door's origin to sit at point 3. Door rotate 1.jpg
First thing to do is to find the axis we want the brush to rotate on. A good way to do this is to look through the grid views and find the view which shows exactly where we want to place the origin. Once found, drag the cursor to the upper left hand side of the view port to reveal which view port it is, 1. This view only shows two of the three axes, the missing one is the one we want, which in this case would be the Y axis. Go to the flag section of the door's object properties, and check the Y Axis box. The other thing to keep in mind is by default, a func_door_rotating moves clockwise around the point of rotation in the 2D view, we want it to move the other way, so we also need to check the Reverse Dir box as well in the flags tab of the object properties. Now move the cursor over the door's origin, 2. Door rotate 2.jpg
We want to rotate around the bottom right corner or the door, A, so we need to drag the origin there. When the mouse is over the origin it should change into a plus sign (B) meaning it is ready to be moved, click on it and drag in down to point A, you should notice a red dotted line that follows it as you move it. Once the origin is in point A we're done setting the origin. Now when the door is opened, it should rotate around point A. Door rotate 3.jpg

Keyvalues

Distance <int>
Degrees the door should rotate. It will rotate away from the player
Solid Type <choices>
How to calculate collisions. To do: What is best when?

Origin:

Origin (X Y Z) <origin>
The position of this entity's center in the world. Rotating entities typically rotate around their origin.

Angles:

Pitch Yaw Roll (Y Z X) <angle>
This entity's orientation in the world. Pitch is rotation around the Y axis, yaw is the rotation around the Z axis, roll is the rotation around the X axis.

BaseDoor:

Linked Door (chainstodoor) <string> !FGD
Passes the door's +use inputs and touch events onto a different door, so it also is activated.
Block Filter Name (filtername) <targetname>
(For Half-Life: Source) Filter to use to determine entities that can block the door.
Speed (speed) <float>
Speed that the door moves, in units (sliding door) or degrees (rotating door) per second.
Start Sound (noise1) <sound>
Sound to play when the door starts moving (regardless of opening or closing).
Stop Sound (noise2) <sound>
Sound to play when the door stops moving (regardless of opening or closing).
Start Close Sound (startclosesound) <sound>
Sound to play when the door starts closing.
Stop Close Sound (closesound) <sound>
Sound to play when the door stops closing.
Delay Before Reset (wait) <float>
Time until the door returns to the closed position. A value of -1 means the door never auto-closes.
Lip (lip) <float>
When the door opens, it will move its full length minus this many units. Negative values will make the door move that many more than its length.
Blocking Damage (dmg) <float>
Amount of damage done to entities that block the movement of this door, per frame.
Bug: Normally a door will damage things blocking it, however if the player is teleported by a trigger_teleport while using noclip, they will not be damaged.
Force Closed (forceclosed) <boolean>
Makes the door close no matter what. Useful for doors that have to close even if the player tries to block them with objects.
Ignore Debris (ignoredebris) <boolean>
Changes the door's collision group to COLLISION_GROUP_INTERACTIVE, which ignores debris objects. Not compatible with the Non-solid to Player spawnflag as it also sets a collision group.
Health (health) <integer> <Obsolete>
Deprecated. Do not use.
Message If Triggered (message) <string> <Obsolete>
Deprecated. Do not use.
Locked Sound (locked_sound) <string>
Sound played when the player tries to open the door, and fails because it's locked.
Unlocked Sound (unlocked_sound) <string>
Sound played when door is unlocked.
Spawn Position (spawnpos) <choices>
State the door should begin in.
  • 0: Closed
  • 1: Open
Locked Sentence (locked_sentence) <choices> (Half-Life: Source)
Intercom voiceline for when the player tries to use the door, but it's locked.
Unlocked Sentence (unlocked_sentence) <choices> (Half-Life: Source)
Intercom voiceline for when the door is unlocked.
Loop Moving Sound? (loopmovesound) <boolean>
Makes the door's Start Sound loop until the door finishes moving.
Bug: If an already-looping sound is played with this enabled, it can continue forever. Further attempts to open or close the door will only add another looping sample to the noise.

Flags

  • 1 : Starts Open - This door spawns open.
  • 2 : Reverse Dir - This door opens in the opposite direction.
  • 4 : Non-solid to Player - This door does not collide with the player or NPCs.
  • 8 : Passable - This door does not collide with anything.
  • 16 : One-way - This door only opens in one direction.
  • 32 : Toggle - This door switches between open and closed on each input.
  • 64 : X Axis - This door rotates on the X axis.
  • 128: Y Axis - This door rotates on the Y axis.
  • 256 : Use Opens - The +use key triggers this door.
  • 512 : NPCs Can't - NPCs can't use this door.
  • 1024 : Touch Opens - Collision with the door triggers it.
  • 2048 : Starts locked - This door spawns locked to the player or NPCs (though an input can still trigger it).
  • 4096 : Door Silent - This door makes no noise.

Inputs

Door:

Open
Opens door.
Close
Closes door.
Toggle
Opens door if closed, closes door if opened.
Lock
Prevent door from opening, but can still close.
Unlock
Allow door to operate as normal.
SetSpeed
float

Outputs

BaseDoor:

OnClose
Fired when the door starts to close.
OnOpen
Fired when the door starts to open.
OnFullyClosed
Fired when the door finishes closing. Reversed if Start Open flag is set.
OnFullyOpen
Fired when the door finishes opening. Reversed if Start Open flag is set.
OnBlockedClosing
Fired when the door has been blocked from closing. !activator is whatever blocks the door.
OnBlockedOpening
Fired when the door has been blocked from opening. !activator is whatever blocks the door.
OnUnblockedClosing
Fired when the door is no longer blocked from closing.
OnUnblockedOpening
Fired when the door is no longer blocked from opening.
OnLockedUse
Fired when the player tries to open the door but fails because it is locked.

Targetname:

OnUser1 to OnUser4
These Outputs each fire in response to the firing of the like-numbered FireUser1 to FireUser4 Input; see User Inputs and Outputs.
OnKilled  (Only in the Left 4 Dead series)
This Output fires when the entity is killed and removed from the game.

See also