Func_mirror is experimental entity that simulates mirror on a brush surfaces with textures of your choice. This entity can be freely triggered to enable/disable rendering. Mirror also supports any movement type (by trigger_setorigin).


OnDestroy Function ondestroyfn : Name of the function to use from already parsed .as script files when entity is destroyed (killed) in any way. If the function belongs to namespace, you must use prefix with the namespace name (e.g. mynamespace::MyFunction) for the keyvalue.

Name targetname : Set name of func_mirror so other entities can trigger it to enable or disable it. Depending on trigger use-type: 'On'- enable mirror, 'Toggle'- toggle mirror, 'Off'- disable mirror. Can be kill-targeted.

Target target : Non-functional in func_mirror.

Pitch Yaw Roll (X Y Z) angles : Where Z means Y and Y means Z, that is, when you're thinking Hammer-grid. (Hammer uses Z for height and Y for depth, while every other sane 3D-application does this the other way round; nonetheless this keyvalue description has the letters in the conventional order) This, technically, is a 3D-vector containing Euler-angles to describe either the entity's rotation or direction of effect. E.g. a func_door_rotating will use this as its initial rotation, while a trigger_push will keep its original alignment and use this for the direction of its push-effect instead. Euler-angles are a hierarchical system to determine an object's orientation in 3D-space. A yaw-value of 0 would mean the entity would face east. (right in top-down view) 90 would mean it would face north. (up in top-down-view) After yaw, pitch is applied. Think aiming up/down with your character in first person. At last, the roll-value is applied. Think your character falling over sideways in first person. Some entities, mostly point entities, do not use the angles keyvalue for any purpose.

Zoom zoom : Scales image the func_mirror is displaying.

Max FPS fps : Target frames per second rendered by this func_mirror. Decreasing improves performance.

Min Render Distance mindist : Minimum render distance in which func_mirror is rendering. Leave empty or set to 0 for no minimum distance threshold.

Max Render Distance maxdist : Maximum render distance in which func_mirror is rendering. Leave empty or set to 0 for infinite.

Texture Mode textureMode : Set which textures on this brush are replaced by display.

  • 0 : { Textures : Apply display on every surface.
  • 1 : All Textures : All transparent textures, those which names starts with '{' character.
  • 2 : Named Texture : Textures with name specified in "Texture Name" keyvalue below.

Texture Name textureName : Name of the texture to apply display on. Works only when "Texture Mode" is set to 'Named Texture'.


  • 1 : Solid : Enables collision.

  • 2 : Start Disabled : If selected, func_mirror need to be enabled.

  • 16 : Render only every 2nd frame : Update display only every two frames instead of every frame, this improves performance.

Mirrors can be moved an rotated by trigger_setorigin. In that case remember to tie origin brush to func_mirror.