ResourcePool.lua 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. require "Polycode/EventDispatcher"
  2. class "ResourcePool" (EventDispatcher)
  3. function ResourcePool:__getvar(name)
  4. if name == "reloadResourcesOnModify" then
  5. return Polycode.ResourcePool_get_reloadResourcesOnModify(self.__ptr)
  6. elseif name == "dispatchChangeEvents" then
  7. return Polycode.ResourcePool_get_dispatchChangeEvents(self.__ptr)
  8. elseif name == "resourceSubscribers" then
  9. return Polycode.ResourcePool_get_resourceSubscribers(self.__ptr)
  10. elseif name == "deleteOnUnsubscribe" then
  11. return Polycode.ResourcePool_get_deleteOnUnsubscribe(self.__ptr)
  12. end
  13. if EventDispatcher["__getvar"] ~= nil then
  14. return EventDispatcher.__getvar(self, name)
  15. end
  16. end
  17. function ResourcePool:__setvar(name,value)
  18. if name == "reloadResourcesOnModify" then
  19. Polycode.ResourcePool_set_reloadResourcesOnModify(self.__ptr, value)
  20. return true
  21. elseif name == "dispatchChangeEvents" then
  22. Polycode.ResourcePool_set_dispatchChangeEvents(self.__ptr, value)
  23. return true
  24. elseif name == "resourceSubscribers" then
  25. Polycode.ResourcePool_set_resourceSubscribers(self.__ptr, value)
  26. return true
  27. elseif name == "deleteOnUnsubscribe" then
  28. Polycode.ResourcePool_set_deleteOnUnsubscribe(self.__ptr, value)
  29. return true
  30. end
  31. if EventDispatcher["__setvar"] ~= nil then
  32. return EventDispatcher.__setvar(self, name, value)
  33. else
  34. return false
  35. end
  36. end
  37. function ResourcePool:ResourcePool(...)
  38. local arg = {...}
  39. if type(arg[1]) == "table" and count(arg) == 1 then
  40. if ""..arg[1].__classname == "EventDispatcher" then
  41. self.__ptr = arg[1].__ptr
  42. return
  43. end
  44. end
  45. for k,v in pairs(arg) do
  46. if type(v) == "table" then
  47. if v.__ptr ~= nil then
  48. arg[k] = v.__ptr
  49. end
  50. end
  51. end
  52. if self.__ptr == nil and arg[1] ~= "__skip_ptr__" then
  53. self.__ptr = Polycode.ResourcePool(unpack(arg))
  54. end
  55. end
  56. function ResourcePool:setFallbackPool(pool)
  57. local retVal = Polycode.ResourcePool_setFallbackPool(self.__ptr, pool.__ptr)
  58. end
  59. function ResourcePool:addResource(resource)
  60. local retVal = Polycode.ResourcePool_addResource(self.__ptr, resource.__ptr)
  61. end
  62. function ResourcePool:removeResource(resource)
  63. local retVal = Polycode.ResourcePool_removeResource(self.__ptr, resource.__ptr)
  64. end
  65. function ResourcePool:hasResource(resource)
  66. local retVal = Polycode.ResourcePool_hasResource(self.__ptr, resource.__ptr)
  67. return retVal
  68. end
  69. function ResourcePool:loadResourcesFromFolder(folder, recursive)
  70. local retVal = Polycode.ResourcePool_loadResourcesFromFolder(self.__ptr, folder, recursive)
  71. end
  72. function ResourcePool:loadResourcesFromMaterialFile(path)
  73. local retVal = Polycode.ResourcePool_loadResourcesFromMaterialFile(self.__ptr, path)
  74. end
  75. function ResourcePool:loadResource(path)
  76. local retVal = Polycode.ResourcePool_loadResource(self.__ptr, path)
  77. if retVal == nil then return nil end
  78. local __c = _G["shared_ptr<Resource>"]("__skip_ptr__")
  79. __c.__ptr = retVal
  80. return __c
  81. end
  82. function ResourcePool:loadResourceWithName(path, name)
  83. local retVal = Polycode.ResourcePool_loadResourceWithName(self.__ptr, path, name)
  84. if retVal == nil then return nil end
  85. local __c = _G["shared_ptr<Resource>"]("__skip_ptr__")
  86. __c.__ptr = retVal
  87. return __c
  88. end
  89. function ResourcePool:getResource(resourceType, resourceName)
  90. local retVal = Polycode.ResourcePool_getResource(self.__ptr, resourceType, resourceName)
  91. if retVal == nil then return nil end
  92. local __c = _G["shared_ptr<Resource>"]("__skip_ptr__")
  93. __c.__ptr = retVal
  94. return __c
  95. end
  96. function ResourcePool:getName()
  97. local retVal = Polycode.ResourcePool_getName(self.__ptr)
  98. return retVal
  99. end
  100. function ResourcePool:setName(name)
  101. local retVal = Polycode.ResourcePool_setName(self.__ptr, name)
  102. end
  103. function ResourcePool:loadFont(name, path)
  104. local retVal = Polycode.ResourcePool_loadFont(self.__ptr, name, path)
  105. if retVal == nil then return nil end
  106. local __c = _G["shared_ptr<Font>"]("__skip_ptr__")
  107. __c.__ptr = retVal
  108. return __c
  109. end
  110. function ResourcePool:getResourceByPath(resourcePath)
  111. local retVal = Polycode.ResourcePool_getResourceByPath(self.__ptr, resourcePath)
  112. if retVal == nil then return nil end
  113. local __c = _G["shared_ptr<Resource>"]("__skip_ptr__")
  114. __c.__ptr = retVal
  115. return __c
  116. end
  117. function ResourcePool:Update(elapsed)
  118. local retVal = Polycode.ResourcePool_Update(self.__ptr, elapsed)
  119. end
  120. function ResourcePool:getResources(resourceType)
  121. local retVal = Polycode.ResourcePool_getResources(self.__ptr, resourceType)
  122. if retVal == nil then return nil end
  123. for i=1,count(retVal) do
  124. local __c = _G["shared_ptr<Resource"]("__skip_ptr__")
  125. __c.__ptr = retVal[i]
  126. retVal[i] = __c
  127. end
  128. return retVal
  129. end
  130. function ResourcePool:checkForChangedFiles()
  131. local retVal = Polycode.ResourcePool_checkForChangedFiles(self.__ptr)
  132. end
  133. function ResourcePool:__delete()
  134. if self then Polycode.delete_ResourcePool(self.__ptr) end
  135. end