Advertisement
Guest User

bullet-fast-cache.patch

a guest
Oct 20th, 2014
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.16 KB | None | 0 0
  1. diff --git a/src/libs/bulletclass.lua b/src/libs/bulletclass.lua
  2. index 967d69d..0ca8758 100644
  3. --- a/src/libs/bulletclass.lua
  4. +++ b/src/libs/bulletclass.lua
  5. @@ -1,40 +1,73 @@
  6.  local bullet = {}
  7.  
  8. +bullet.__dead_pool = {}
  9. +bullet.__dead_pool_max = 100
  10. +bullet.__live_pool = {}
  11. +
  12.  function bullet.new(atlasDrawCache)
  13.  
  14. -  local self={}
  15. -  self._atlasDrawCache=atlasDrawCache
  16. -  self.getAtlasDrawCache=bullet.getAtlasDrawCache
  17. -  self.update=bullet.update
  18. -  self.draw=bullet.draw
  19. +  local self
  20. +  if #bullet.__dead_pool > 0 then
  21. +    self = table.remove(bullet.__dead_pool)
  22. +  else
  23. +    self = {}
  24. +   self._atlasDrawCache=atlasDrawCache
  25. +    self.getAtlasDrawCache=bullet.getAtlasDrawCache
  26. +    self.update=bullet.update
  27. +    self.draw=bullet.draw
  28. +    self.getOwner=bullet.getOwner
  29. +    self.setOwner=bullet.setOwner
  30. +    self.getDamage=bullet.getDamage
  31. +    self.setDamage=bullet.setDamage
  32. +    self.getDuration=bullet.getDuration
  33. +    self.setDuration=bullet.setDuration
  34. +    self.getSpeed=bullet.getSpeed
  35. +    self.setSpeed=bullet.setSpeed
  36. +    self.getX=bullet.getX
  37. +    self.setX=bullet.setX
  38. +    self.getY=bullet.getY
  39. +    self.setY=bullet.setY
  40. +    self.getAngle=bullet.getAngle
  41. +    self.setAngle=bullet.setAngle
  42. +    self.getRemove=bullet.getRemove
  43. +    self.setRemove=bullet.setRemove
  44. +    self.getRadius=bullet.getRadius
  45. +    self.setRadius=bullet.setRadius
  46. +    table.insert(bullet.__live_pool,self)
  47. +  end
  48. +  bullet.__reset(self)
  49. +  return self
  50. +end
  51. +
  52. +function bullet.__reset(self)
  53.    self._owner=nil --init
  54. -  self.getOwner=bullet.getOwner
  55. -  self.setOwner=bullet.setOwner
  56.    self._damage=nil --init
  57. -  self.getDamage=bullet.getDamage
  58. -  self.setDamage=bullet.setDamage
  59.    self._duration=nil --init
  60. -  self.getDuration=bullet.getDuration
  61. -  self.setDuration=bullet.setDuration
  62.    self._speed=nil --init
  63. -  self.getSpeed=bullet.getSpeed
  64. -  self.setSpeed=bullet.setSpeed
  65.    self._x=nil --init
  66. -  self.getX=bullet.getX
  67. -  self.setX=bullet.setX
  68.    self._y=nil --init
  69. -  self.getY=bullet.getY
  70. -  self.setY=bullet.setY
  71.    self._angle=nil --init
  72. -  self.getAngle=bullet.getAngle
  73. -  self.setAngle=bullet.setAngle
  74. -  self._remove=nil
  75. -  self.getRemove=bullet.getRemove
  76. -  self.setRemove=bullet.setRemove
  77. -  self._radius=16
  78. -  self.getRadius=bullet.getRadius
  79. -  self.setRadius=bullet.setRadius
  80. -  return self
  81. +  self._remove=nil --init
  82. +  self._radius=16 --init
  83. +end
  84. +
  85. +function bullet:destroy()
  86. +  for index,obj in pairs(bullet.__live_pool) do
  87. +    if obj == self then
  88. +      if #bullet.__dead_pool < bullet.__dead_pool_max then
  89. +        table.insert(bullet.__dead_pool,
  90. +          table.remove(bullet.__live_pool,index))
  91. +      else
  92. +        table.remove(bullet.__live_pool,index)
  93. +      end
  94. +      return true -- object has been marked as dead
  95. +    end
  96. +  end
  97. +  return false -- object was not in live_pool
  98. +end
  99. +
  100. +function bullet:getAtlasDrawCache()
  101. +  return self._atlasDrawCache
  102.  end
  103.  
  104.  function bullet:update(dt)
  105. @@ -68,10 +101,6 @@ function bullet:draw(x,y,scale)
  106.    end
  107.  end
  108.  
  109. -function bullet:getAtlasDrawCache()
  110. -  return self._atlasDrawCache
  111. -end
  112. -
  113.  function bullet:getOwner()
  114.    return self._owner
  115.  end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement