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

func_illusionary_visblocker still doesn't work as expected

Open nathnolt opened this issue 1 year ago • 8 comments

Thanks for the fix of func_illusionary_visblocker,

That was really fast, major props.

But I'm really sorry, because after trying the artifact in which it was fixed, (and to honest, everything which I talked about was fixed) it still does not work as it did in v0.18.1 and thus how I personally expect it to work.

In v0.18.1 , when you give the func_illusionary_visblocker a visible texture, you should be able to see this visible texture from the inside. Whereas in 8038b73, you cannot see this texture. instead you always see the void when you're inside of this brush.

If you give different faces different textures, the texture on the outside basically also becomes that texture on the inside.

In v0.18.1 , when giving it a liquid texture, you can still walk through it, which isn't the case in 8038b73 (This is important because with a liquid texture, you can never see into the void even if you're on the bounding edge seeing partly the inside and partly the outside).

I really hope that it makes sense. Maybe you could test it on v0.18

nathnolt avatar Nov 19 '24 20:11 nathnolt

Thanks for the detailed report, I think I got the remaining 2 issues:

  • liquid brushes can be used
  • it's forced to be 2 sided now (as if you use _mirrorinside 1)

ericwa avatar Nov 21 '24 03:11 ericwa

Very nice, that all works now.

However, my intended use-case, is that I have func_illusionary_visblocker inside of an func_detail_illusionary, in order to create a message box, which you can stand inside of, in order for the text to be readable, as my func_illusionary_visblocker uses a black texture.

In 1.18, you can put a func_illusionary_visblocker within a func_detail_illusionary and that works. Within the current version, it does not work.

I didn't know about the _mirrorinside, it's very cool.

I've messed a bit with func_detail_illusionary and func_illusionary_visblocker, and it seems like combining them both, causes them to join into 1 combined shape. Is it somehow possible to have them be seperate, so that if you put a func_detail_illusionary within another func_detail_illusionary (or with func_illusionary_visblocker or both), that you would see the 1 shape within the other shape?

And another question: Would it somehow be possible to have a func_detail_illusionary or func_illusionary_visblocker with just a textured inside? So no texture on the outside, but just on the inside?

nathnolt avatar Nov 21 '24 20:11 nathnolt

I really appreciate you caring so much about this issue.

I had forgotten 1 more thing though, as you made it so that _mirrorinside is the default for func_illusionary_visblocker, would it be possible to make it so that if you set _mirrorinside 0, it disables it?

Thanks again.

nathnolt avatar Nov 21 '24 20:11 nathnolt

It should still respect _mirrorinside, but if not, that should be easy to fix. Having a visblocker with only texture on the inside wouldn't make sense because the outside texture would be "void", but it can be done with a non-vis-blocking illusionary in theory (it could be used for interesting visual effects)

Paril avatar Nov 21 '24 21:11 Paril

To be honest, I can just use a func_illusionary, which does seem to work. to solve the thing I wanted in the first place.

nathnolt avatar Nov 21 '24 22:11 nathnolt

I should be able to fix:

  • visblocker merging with detail_illusionary, this was an oversight
  • _mirrorinside 0 not working on visblocker, also just an implementation shortcut I took, but expected to work. although it’s not advised to do this unless you’re controlling what’s drawn in the void (e.g. a custom game and not just a quake map), since the player will see the void when inside

regarding being able to layer multiple func detail illusionary’s inside each other and have them not clip away, we have a key for this, _noclipfaces 1. Should exist both in older builds as well as 2.0.0 alpha.

ericwa avatar Nov 22 '24 16:11 ericwa

I think I fixed those two things in (edit) a0953767a2a203435fd3b157e56bc1a1a8720a44 + dfa164ffce1b415c04247533e3095b5501e04268

a few things to note:

  • I made func_illusionary_visblocker higher priority than func_detail_illusionary, no particular reason for this choice other than this is consistent with what 0.18.1 did. The priority just comes into play when you have two volumes touching and determining which face "wins".

  • The results are a bit weird when you have a func_illusionary_visblocker with _mirrorinside 0 touching a func_detail_illusionary

    Standing inside the visblocker, you might expect to see the func_detail_illusionary wall on one side and void on the other 3 sides. Instead you'll get void on all 4 sides. This is not specific to visblocker, but happens when a higher-pri contents with _mirrorinside 0 is touching a lower-pri contents. I might change this later so for now it's "undefined behaviour".

ericwa avatar Nov 24 '24 05:11 ericwa

Thanks :)

That seems to work, however, I did see a small difference visually. And I was wondering why.

When you put a func_illusionary_visblocker inside of a func_detail_illusionary and you make the func_illusionary_visblocker 0.125 units smaller, so it's just slightly smaller, the corners of the func_detail_illusionary won't show. Instead, we can see a sliver of the func_illusionary_visblocker underneath.

See the image / map for what I mean. spasm0010 visbl_det_ill_combo.zip

This does not seem to happen in 0.18.1

I don't really really care whether this gets fixed, as I can make my effect in a different better way, but I'm merely curious as to why this is different.

nathnolt avatar Nov 24 '24 17:11 nathnolt