Objects Appear Differently Based on Player State?

I am basing a lot of combat in my game around a mechanic that allows you to swap to a “parallel world” mid combat. The regular world and the parallel world have the same geometry, objects, enemies, but the appearance and materials of the world and objects should be drastically different. For instance, in the main world you’d be on a grassy hill, but in the parallel world that same hill might be molten rock.

Similarly, enemies will “fade out” into shadowy versions of themselves when in the opposite world from them, reducing the damage they take and deal to you and reducing threat against you.

I have a good idea of how to do that second part, with different enemy interactions based on whether the player and enemy are in the same world, but I’m not sure what the best way to go about changing the materials of ALL terrain and objects to either a completely different texture or a faded version of the same texture based on the player state.

I haven’t gotten into multiplayer much yet, so nothing specific there, but I also want to know if it’s possible to make sure that each player sees the world based only on their state and not another player’s, as well as seeing another player as faded if he is in the other world.

Any suggestions?

Here is a video showing functionally what I want to do. However, the way I set this up was by making every piece of the level (except the character itself) a child of a new blueprint class called WorldTerrain, then having another blueprint called PlaneManager that saves an array of all actors of class WorldTerrain (which contains a mesh and two materials, one for each world), and then changes the material of each mesh to the appropriate one when the character swaps worlds.

This seems like it’s going to run into a TON of issues on objects that have multiple meshes, materials, etc. and I also hate making the entire level out of exclusively children of one BP class (WorldTerrain).