@name Snowy @persist Max Pos SizeMin SizeMax Ind Speed Count @persist [Range Direction Disp Ep BDisp BU_Off]:vector @persist E:entity @persist Flakes:table #------------------------------# # DGROUSE - 21/06/14 # #------------------------------# if( first() ){ Pos = 400 Max = 1000 Range = vec(250,250,10) Direction = vec(1,0,-5) SizeMin = 1 SizeMax = 3 Speed = 999 E = entity() function number holo(P:vector,S:number){ Ind++ holoCreate(Ind) holoPos(Ind,P) holoScale(Ind,vec()+S) holoModel(Ind,"hq_sphere") #holoAlpha(Ind,randint(10,50)) return Ind } function buildup(){ #BU_Off = E:pos()-vec(0,0,20) holoCreate(-2) holoPos(-2,BU_Off) holoScale(-2,vec(1000000000,1000000000,10)) holoModel(-2,"plane") holoMaterial(-2,"paintsplatblue") } function base(){ holoCreate(-1) holoAlpha(-1,0) } function flake(){ Count++ if( Count >= Max ){ holoDelete(Count-Max) } local S = random(SizeMin,SizeMax)/10 local P = randvec(Range+Ep,-Range+Ep) local F = holo(P,S) holoParent(F,-1) } function startSnow(){ Ep = E:pos()+vec(0,0,Pos) base() buildup() timer("flake",0) timer("move",50) } function stopSnow(){ stoptimer("flake") stoptimer("move") } startSnow() } if( clk("flake") ){ flake() timer("flake",1000/Speed) } if( clk("move") ){ Disp = Disp+Direction holoPos(-1,Ep+Disp) if( (BU_Off+BDisp):z() < E:pos():z() ){ BDisp = BDisp+vec(0,0,0.1) holoPos(-2,BU_Off+BDisp) } timer("move",50) }