I don't need to test my programs. I have an error-correcting modem.
Legacy:XWeatherEffect
I'm singing in the rain...
Just singing in the rain...
What a glorious feeling...
I'm happy again...
There's cool weather in UT2003. You can see it in action in maps such as the DE Bonus Pack's GrendelKeep.
Note that xWeatherEffect is only visible at higher detail settings. This might make Emitter or xEmitter more attractive for weather effects if you want absolutely every player to experience the weather. However, you should be able to force high detail in Level Properties -> advanced. (but wouldn't that be a bit rude to the player?)
Quick Start (snow)
- Add the xWeatherEffect Actor
- Set The Resource Property Display -> Skins[0] to FinalBlend'EmitterTextures.MultiFrame.SnowFB'
- Tweak the area of effect (the position variable) and any other settings as nessesary.
- Go play in the snow.
Excluding volumes =
To exclude vertain Volumes from the weather effect, match these tags:
- xWeatherEffect: Events -> Tag
- The relevant Volumes: Events -> Tag
Related Topics
Dynamic example
Recondite My not optimized/rough example for simple fade in/out of weather that can be controlled server side. There are hopefully much more efficient methods for the array management. Or you could cache steps...
class DynamicWeather extends xWeatherEffect; var transient array<WeatherPcl> pclFull; var private bool bFadeOut; var private bool bFadeIn; var config int fadeSize; var private int maxPcl; replication { reliable if(Role==ROLE_Authority) bFadeIn, bFadeOut; } function Trigger( actor Other, pawn EventInstigator ) { bFadeOut=!bFadeOut; bFadeIn=!bFadeIn; } //The native code uses the pcl array for rendering, we want to increase/decrease the array size //based on whether we are fading in or out. simulated function tick(float delta) { local int i, relativeFade; if ( Level.NetMode != NM_DedicatedServer) { if (pclFull.length==0) { pclFull=pcl; maxPcl = pclFull.length; } i=pcl.length; if (bFadeOut && i > 0) { if (i < fadeSize) pcl.remove(0, i); else pcl.remove(pcl.length-fadeSize, fadeSize); } else if (bFadeIn && i < maxPcl) { relativeFade=i+fadeSize; while(i<relativeFade && i < maxPcl) { pcl[i]=pclFull[i++]; } } } super.tick(delta); } defaultproperties { bStatic=False fadeSize=50 bFadeOut=False bFadeIn=True bAlwaysRelevant=True }
ZxAnPhOrIaN: How do you have snow in a given spot, not globally. I want it to snow on earth, but not in Heaven and Hell. Any help? should i Exclude a Volume?
Wormbo: You'd have to exclude lots of volumes then. Maybe using an Emitter or XEmitter to create the snow effect would be easier here? I don't know about the performance impact, though.
ZxAnPhOrIaN: Should i make a volume that encompasses the smaller volumes and set the priority of it to be greater?
Foxpaw: I believe you need to set the priority of the large volume to be lesser than the ones that you want to override it.. (That part I think is correct. The following I'm sure about though.) I'd put one big volume over the heaven area and one over the hell area. Then assign the same tag to all of the volumes except those on Earth.
Tony: Question. When I tried the quick snow above, all I got was a bunch of fugly-looking white rhombii(?) falling from the sky around the player... and is there any way of making snow wider around the player too? So that when you're Scorpioning across you don't see pathetic remnants of snow as all of it is behind you? (Effecively based on how the actor works... I mean, is there any way of expanding the area it snows around the player?)
Legolas: After fooling around for a while, I figured out how maps included with UT2004 looked decent with XWeatherEffect snow. They use Distance_Fog. This, when set to a darkish gray, looks like your vision is obscured by snow, and prevents you from seeing small details such as snow flakes from any distance. I'm not sure if this is what your looking for, but it works.