ericwa/ericw-tools

[Feature] _illusionary on any entity to disable collision (like ZHLT's zhlt_noclip)

Opened this issue · 3 comments

Allows for stuff like non-solid trains and doors for aesthetic purposes (ex: clouds), without requiring mod support. Also saves clipnodes on non-standard nonsolid entities.

In Q1/Hx2/HL1, this would only generate hull 0 for any brush that isn't a clip brush. In Q2, this wouldn't really be necessary unless making a gigantic map (since contents_mist exists), but would only generate the visual mesh.

The _noclip key is already taken on worldspawn, for something similar but slightly different (https://ericw-tools.readthedocs.io/en/latest/qbsp.html#cmdoption-qbsp-noclip - skips building hull1/2 entirely, bsp won't load in most engines - mostly meant for debugging or to be combined with -wrbrushes.)

Even if this would only be used on real bmodel entities, (func_door, etc.) it should probably be a different key for clarity.

Since this sounds the same as func_detail_illusionary but just for bmodels, maybe _illusionary for the key name?
Would it be OK if the hull0 contents was made empty, same as func_detail_illusionary?

_illusionary is a logical name.

Empty contents would usually be fine (and probably expected), but being able to have a solid hull 0 without hulls 1-3 is sometimes useful as well, particularly in HL for small details to be able to still receive decals without hindering movement. Idk what to call a variant that retains contents though (_pointonly? _onlyhull0?), and iiuc it would work the same as _illusionary in Q2 mode (due to how q2bsp works).

Thought about this a bit more, and was wondering if perhaps a _contents KV that overrides the contents of all of an entity's brushes (except a few special ones, like clip* and origin) might help? So by default, _illusionary would set empty contents, but a HL1 could set -2 to keep zhlt_noclip-style behavior.