Python1320

Untitled

Aug 22nd, 2010
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.41 KB | None | 0 0
  1. module  ( "ms" , package.seeall )
  2.  
  3. daynight = daynight or {}
  4.  
  5. local fog = ents.FindByClass("env_fog_controller")[1]
  6. local sun = ents.FindByClass("env_sun")[1]
  7. local light = ents.FindByClass("light_environment")[1]
  8. local shadow = ents.FindByClass("shadow_control")[1]
  9. local skypos = Vector(-11760,12800,12800)
  10.  
  11. --print(fog, sun, light, shadow)
  12.  
  13. hook.Add("InitPostEntity", "DayNight:InitPostEntity", function()
  14.     fog = ents.FindByClass("env_fog_controller")[1]
  15.     sun = ents.FindByClass("env_sun")[1]
  16.     light = ents.FindByClass("light_environment")[1]
  17.     shadow = ents.FindByClass("shadow_control")[1]
  18.     if SERVER then daynight.Moon = daynight.GetMoon() end
  19. end)
  20.  
  21.  
  22.  
  23.  
  24. if SERVER then return end
  25.  
  26.  
  27.  
  28. --- SKYBOX COLOR CHANGING
  29.  
  30. local ft,lf,rt,up,bk,dn
  31. local appr=math.Approach
  32.  
  33. local from=1
  34. local skyname=GetConVarString'sv_skyname'
  35.  
  36. ft = Material('skybox/'..tostring(skyname)..'ft')
  37. lf = Material('skybox/'..tostring(skyname)..'lf')
  38. rt = Material('skybox/'..tostring(skyname)..'rt')
  39. up = Material('skybox/'..tostring(skyname)..'up')
  40. bk = Material('skybox/'..tostring(skyname)..'bk')
  41. dn = Material('skybox/'..tostring(skyname)..'dn')
  42.  
  43. function FadeSkyBox(target,speed)
  44.            
  45.     if up:IsError() || lf:IsError() || ft:IsError() || rt:IsError() || bk:IsError() then error("Skybox "..skyname.." not found") end
  46.    
  47.     local set=ft.SetMaterialVector -- FIXME: TEXTURE IS RESET |:
  48.     local vector = Vector(0)
  49.    
  50.     local function Changer()
  51.        
  52.         from=appr(from,target,speed)
  53.        
  54.         vector.x = from
  55.         vector.y = from
  56.         vector.z = from
  57.        
  58.         set(ft,'$color', vector)
  59.         set(lf,'$color', vector)
  60.         set(rt,'$color', vector)
  61.         set(up,'$color', vector)
  62.         set(bk,'$color', vector)
  63.         set(dn,'$color', vector)
  64.        
  65.         if from==target then hook.Remove("Think", "FadeSkyBox") end
  66.     end
  67.    
  68.     if !speed then
  69.         speed=256
  70.         Changer()
  71.         return
  72.     end
  73.    
  74.     hook.Add("Think", "FadeSkyBox", Changer)
  75.    
  76. end
  77.  
  78. timer.Create("DayNight:FadeSkybox",0.1,0,function()
  79.     FadeSkyBox(GetGlobalFloat("DayNight:SkyBox", 1),0.01)
  80.     local moon = GetGlobalEntity("DayNight:Moon")
  81.     if IsValid(moon) then
  82.         moon:SetModelScale(Vector()*GetGlobalFloat("DayNight:MoonSize", 30))
  83.     end
  84. end)
  85.  
  86. daynight.Stars = {}
  87.  
  88. daynight.AmountOfStars = 100
  89.  
  90. for i=1, daynight.AmountOfStars do
  91.     daynight.Stars[i] = {
  92.         pos = Angle(math.random(360),math.random(360),math.random(360)):Forward() * 1000,
  93.         x = math.random() * 10 + 1,
  94.         y = math.random() * 10 + 1,
  95.         color =  HSVToColor(math.random(360), 0.2,1),
  96.     }
  97.    
  98.     local pos = daynight.Stars[i].pos
  99.     daynight.Stars[i]._pos = Vector(pos.x,pos.y,pos.z)
  100. end
  101.  
  102. local material = Material("particle/fire")
  103. local prevsunangle = Angle(0)
  104. local data
  105. local speed = 0
  106.    
  107. hook.Add("PostDrawOpaqueRenderables", "DayNight:DrawStars", function()
  108.     local fade = GetGlobalFloat("DayNight:SkyBox", 1) * -1 + 1
  109.     if fade < 0.15 then return end
  110.     local suninfo = util.GetSunInfo()
  111.     local angle = suninfo.direction:Angle()
  112.     local delta = prevsunangle - angle
  113.            
  114.     delta = Angle(math.abs(delta.p), math.abs(delta.y), math.abs(delta.r))
  115.    
  116.     local moon = GetGlobalEntity("DayNight:Moon")
  117.    
  118.     if IsValid(moon) then
  119.         local time = CurTime() * 2
  120.         moon:SetRenderAngles(Angle(time,time,time))
  121.     end
  122.    
  123.     render.SetMaterial(material)
  124.     for i=1, daynight.AmountOfStars do
  125.         data = daynight.Stars[i]
  126.         data.pos:Rotate(delta)
  127.         render.DrawSprite( skypos + data.pos, data.x*fade, data.y*fade, data.color)
  128.     end
  129.     prevsunangle = util.GetSunInfo().direction:Angle()
  130. end)
Advertisement
Add Comment
Please, Sign In to add comment