Advertisement
Chewgum

Untitled

Feb 22nd, 2013
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.12 KB | None | 0 0
  1. AddCSLuaFile()
  2.  
  3. if _FIXEDEMITTERS_ or not CLIENT then return end
  4. _FIXEDEMITTERS_ = true
  5.  
  6. local OldParticleEmitter = ParticleEmitter
  7.  
  8. local function ForwardFunc(from, funcname)
  9.     from[funcname] = function(me, a, b, c, d, e, f)
  10.         if not me.Emitter and me.EmitterVars then
  11.             me.Emitter = OldParticleEmitter(unpack(me.EmitterVars))
  12.         end
  13.  
  14.         return me.Emitter[funcname](me.Emitter, a, b, c, d, e, f)
  15.     end
  16. end
  17.  
  18. local wrapper = {}
  19.  
  20. ForwardFunc(wrapper, "Add")
  21. ForwardFunc(wrapper, "Draw")
  22. ForwardFunc(wrapper, "GetNumActiveParticles")
  23. ForwardFunc(wrapper, "SetBBox")
  24. ForwardFunc(wrapper, "SetNearClip")
  25. ForwardFunc(wrapper, "SetNoDraw")
  26. ForwardFunc(wrapper, "SetParticleCullRadius")
  27. ForwardFunc(wrapper, "SetPos")
  28.  
  29. function wrapper:Finish()
  30.     if self.Emitter then self.Emitter:Finish() end
  31.     self.Emitter = nil
  32. end
  33.  
  34. local meta = {}
  35. function meta:__gc()
  36.     if self.Emitter then self.Emitter:Finish() end
  37.     self.Emitter = nil
  38. end
  39.  
  40. function ParticleEmitter(...)
  41.     local e = {}
  42.     for k, v in pairs(wrapper) do e[k] = v end
  43.     e.EmitterVars = {...}
  44.     e.Emitter = OldParticleEmitter(...)
  45.     setmetatable(e, meta)
  46.     return e
  47. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement