func_detail

From Sven Co-op
Jump to navigation Jump to search
func_detail
Type

brush

Status

supported

 


Func_detail is useful brush entity, similar to func_wall except it doesn't support Render Modes. Detailed brushes like tables, computers, pipes, cars etc. should be turned into func_detail instead of func_wall. Brushes tied into func_detail are Detail Brushes. Detail brushes don't block vis, nor slowing vis processing down. It won't chop other brushes, helps to avoid many compiling warnings. The one of most important feature of func_detail is that detail brushes won't count into models limit (just like func_walls) which is very easy to exceed in Sven Co-op. You can customize detail level (description below), and passability of func_brush (it's better than func_illusionary because of better lightning receiving and in-game decals support). Using this brush in replace of func_wall is highly recommended. Every keyvalue is optional, it's recommended to leave them as they are (instead of 'Passable' key) for beginner mappers.

1 Keyvalues

Detail level : zhlt_detaillevel

The brush's detail level. Each level will be chopped by brushes of equal or lower detail level, and always be chopped by world brushes, and only chop brushes of equal or greater level. Use higher amount for smaller details. Try to avoid too many detail levels in the map (it's increasing .bsp file size)

Lower it's level to chop others : zhlt_chopdown

If you set this value to no lower than detail level, this brush can chop world brushes (if 'detail level' minus 'lower it's level to chop others' is equal to 0) and brushes from lower detail levels.

Raise it's level to get chopped : zhlt_chopup

Specify to chop brushes from higher detail levels that this func_detail.

Priority when faces overlap : zhlt_coplanarpriority

Helps prevent z-fighting between two or more overlapping detail brush faces by giving each detail its own priority. The two brushes must be on the same detail level to make use of this priority (use detail level 0 to work with world brushes).

Detail level of cliphull : zhlt_clipnodedetaillevel

Should always be '0' or '1' unless you are grappling with cliphull errors.

Passable : zhlt_noclip

Specify whenever func_detail can be walked through ('Yes') or have full collision ('No'). Note that bullets will still hit this entity when it's passable.

2 Detail level

  • 0: This is the same level as ordinary world brushes. Behaves just as world brushes when it comes to face chopping. Will block VIS.
  • 1: The default detail level. Will be chopped by world brushes and level 0 details, but won't chop level 2 and up. Is ignored by VIS.

All levels from 2 and up behaves just as level 1, but will be chopped by any level equal or less than its own detail level, and chop any details of a greater level. This continues ad infinitum.

3 Notes

  • Detail layers uses an advanced method to decide leafnode content, so they won't cause "Ambiguous leafnode contents" compile warning.
  • Despite becoming an ordinary world brush during compilation, it cannot be used to seal the map. It is kept separate from ordinary world brushes during processing of Hull 0 and as such cannot be used to prevent leaks. Only ordinary world brushes should be used to close up a map.
  • Even if Passable is set to Yes (zhlt_noclip 1) it will still be affected by decals such as sprays and bullet holes.