ericw-tools icon indicating copy to clipboard operation
ericw-tools copied to clipboard

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

Open SirYodaJedi opened this issue 1 year ago • 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.

SirYodaJedi avatar Apr 11 '24 18:04 SirYodaJedi

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?

ericwa avatar Apr 12 '24 03:04 ericwa

_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).

SirYodaJedi avatar Apr 12 '24 04:04 SirYodaJedi

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.

SirYodaJedi avatar Jul 06 '24 15:07 SirYodaJedi

As my main use case requires hull 0 to be generated, I'm not too fond of _illusionary. I considered having a _maxhull you could set to 0 to have the same effect.

L-P avatar Nov 24 '24 16:11 L-P

I considered having a _maxhull you could set to 0 to have the same effect.

Maybe out of scope of this issue, but perhaps a _onlyhulls with a comma separated list of which hulls to generate? Seeing as some GoldSrc maps would benefit from having only hulls 0, 1, and 3. Not sure what would happen if you omit hull 0 in that list, though.

SirYodaJedi avatar Nov 24 '24 16:11 SirYodaJedi

I forgot about hull 2, this makes a max hull fairly useless.
I'd go for a _skip_hulls as a Flags field. Easier to use and implement. Omitting hull 0 would have the same effect as a func_detail_illusionary.

L-P avatar Nov 24 '24 19:11 L-P