Particle.lua 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. class "Particle"
  2. BILLBOARD_PARTICLE = 0
  3. MESH_PARTICLE = 1
  4. function Particle:__index__(name)
  5. if name == "velVector" then
  6. retVal = Polycore.Particle_get_velVector(self.__ptr)
  7. if Polycore.__ptr_lookup[retVal] ~= nil then
  8. return Polycore.__ptr_lookup[retVal]
  9. else
  10. Polycore.__ptr_lookup[retVal] = Vector3("__skip_ptr__")
  11. Polycore.__ptr_lookup[retVal].__ptr = retVal
  12. return Polycore.__ptr_lookup[retVal]
  13. end
  14. elseif name == "dirVector" then
  15. retVal = Polycore.Particle_get_dirVector(self.__ptr)
  16. if Polycore.__ptr_lookup[retVal] ~= nil then
  17. return Polycore.__ptr_lookup[retVal]
  18. else
  19. Polycore.__ptr_lookup[retVal] = Vector3("__skip_ptr__")
  20. Polycore.__ptr_lookup[retVal].__ptr = retVal
  21. return Polycore.__ptr_lookup[retVal]
  22. end
  23. elseif name == "deviation" then
  24. retVal = Polycore.Particle_get_deviation(self.__ptr)
  25. if Polycore.__ptr_lookup[retVal] ~= nil then
  26. return Polycore.__ptr_lookup[retVal]
  27. else
  28. Polycore.__ptr_lookup[retVal] = Vector3("__skip_ptr__")
  29. Polycore.__ptr_lookup[retVal].__ptr = retVal
  30. return Polycore.__ptr_lookup[retVal]
  31. end
  32. elseif name == "life" then
  33. return Polycore.Particle_get_life(self.__ptr)
  34. elseif name == "lifespan" then
  35. return Polycore.Particle_get_lifespan(self.__ptr)
  36. elseif name == "brightnessDeviation" then
  37. return Polycore.Particle_get_brightnessDeviation(self.__ptr)
  38. elseif name == "perlinPosX" then
  39. return Polycore.Particle_get_perlinPosX(self.__ptr)
  40. elseif name == "perlinPosY" then
  41. return Polycore.Particle_get_perlinPosY(self.__ptr)
  42. elseif name == "perlinPosZ" then
  43. return Polycore.Particle_get_perlinPosZ(self.__ptr)
  44. end
  45. end
  46. function Particle:__set_callback(name,value)
  47. if name == "life" then
  48. Polycore.Particle_set_life(self.__ptr, value)
  49. return true
  50. elseif name == "lifespan" then
  51. Polycore.Particle_set_lifespan(self.__ptr, value)
  52. return true
  53. elseif name == "brightnessDeviation" then
  54. Polycore.Particle_set_brightnessDeviation(self.__ptr, value)
  55. return true
  56. elseif name == "perlinPosX" then
  57. Polycore.Particle_set_perlinPosX(self.__ptr, value)
  58. return true
  59. elseif name == "perlinPosY" then
  60. Polycore.Particle_set_perlinPosY(self.__ptr, value)
  61. return true
  62. elseif name == "perlinPosZ" then
  63. Polycore.Particle_set_perlinPosZ(self.__ptr, value)
  64. return true
  65. end
  66. return false
  67. end
  68. function Particle:Particle(...)
  69. for k,v in pairs(arg) do
  70. if type(v) == "table" then
  71. if v.__ptr ~= nil then
  72. arg[k] = v.__ptr
  73. end
  74. end
  75. end
  76. if self.__ptr == nil and arg[1] ~= "__skip_ptr__" then
  77. self.__ptr = Polycore.Particle(unpack(arg))
  78. Polycore.__ptr_lookup[self.__ptr] = self
  79. end
  80. end
  81. function Particle:Reset(continuious)
  82. local retVal = Polycore.Particle_Reset(self.__ptr, continuious)
  83. end
  84. function Particle:createSceneParticle(particleType, material, particleMesh)
  85. local retVal = Polycore.Particle_createSceneParticle(self.__ptr, particleType, material.__ptr, particleMesh.__ptr)
  86. end
  87. function Particle:createScreenParticle(particleType, texture, particleMesh)
  88. local retVal = Polycore.Particle_createScreenParticle(self.__ptr, particleType, texture.__ptr, particleMesh.__ptr)
  89. end
  90. function Particle:__delete()
  91. Polycore.__ptr_lookup[self.__ptr] = nil
  92. Polycore.delete_Particle(self.__ptr)
  93. end