Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

func_illusionary_visblocker still doesn't work as expected #441

Open
nathnolt opened this issue Nov 19, 2024 · 8 comments
Open

func_illusionary_visblocker still doesn't work as expected #441

nathnolt opened this issue Nov 19, 2024 · 8 comments

Comments

@nathnolt
Copy link

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

@ericwa ericwa closed this as completed in 9d6ce6d Nov 21, 2024
@ericwa
Copy link
Owner

ericwa commented Nov 21, 2024

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)

@nathnolt
Copy link
Author

nathnolt commented Nov 21, 2024

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?

@ericwa ericwa reopened this Nov 21, 2024
@nathnolt
Copy link
Author

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.

@Paril
Copy link
Collaborator

Paril commented Nov 21, 2024

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)

@nathnolt
Copy link
Author

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.

@ericwa
Copy link
Owner

ericwa commented Nov 22, 2024

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 added a commit that referenced this issue Nov 24, 2024
See #441

- fix visblocker merging with detail_illusionary, by introducing a new content type
- fix _mirrorinside 0 not working on visblocker
@ericwa
Copy link
Owner

ericwa commented Nov 24, 2024

I think I fixed those two things in (edit) a095376 + dfa164f

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".

@nathnolt
Copy link
Author

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants