ResourcePool.lua 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. require "Polycode/EventDispatcher"
  2. class "ResourcePool" (EventDispatcher)
  3. function ResourcePool:__getvar(name)
  4. if name == "reloadResourcesOnModify" then
  5. return Polycore.ResourcePool_get_reloadResourcesOnModify(self.__ptr)
  6. elseif name == "dispatchChangeEvents" then
  7. return Polycore.ResourcePool_get_dispatchChangeEvents(self.__ptr)
  8. elseif name == "resourceSubscribers" then
  9. return Polycore.ResourcePool_get_resourceSubscribers(self.__ptr)
  10. elseif name == "deleteOnUnsubscribe" then
  11. return Polycore.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. Polycore.ResourcePool_set_reloadResourcesOnModify(self.__ptr, value)
  20. return true
  21. elseif name == "dispatchChangeEvents" then
  22. Polycore.ResourcePool_set_dispatchChangeEvents(self.__ptr, value)
  23. return true
  24. elseif name == "resourceSubscribers" then
  25. Polycore.ResourcePool_set_resourceSubscribers(self.__ptr, value)
  26. return true
  27. elseif name == "deleteOnUnsubscribe" then
  28. Polycore.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 = Polycore.ResourcePool(unpack(arg))
  54. end
  55. end
  56. function ResourcePool:setFallbackPool(pool)
  57. local retVal = Polycore.ResourcePool_setFallbackPool(self.__ptr, pool.__ptr)
  58. end
  59. function ResourcePool:addResource(resource)
  60. local retVal = Polycore.ResourcePool_addResource(self.__ptr, resource.__ptr)
  61. end
  62. function ResourcePool:removeResource(resource)
  63. local retVal = Polycore.ResourcePool_removeResource(self.__ptr, resource.__ptr)
  64. end
  65. function ResourcePool:hasResource(resource)
  66. local retVal = Polycore.ResourcePool_hasResource(self.__ptr, resource.__ptr)
  67. return retVal
  68. end
  69. function ResourcePool:loadResourcesFromFolder(folder, recursive)
  70. local retVal = Polycore.ResourcePool_loadResourcesFromFolder(self.__ptr, folder, recursive)
  71. end
  72. function ResourcePool:loadResource(path)
  73. local retVal = Polycore.ResourcePool_loadResource(self.__ptr, path)
  74. if retVal == nil then return nil end
  75. local __c = _G["Resource"]("__skip_ptr__")
  76. __c.__ptr = retVal
  77. return __c
  78. end
  79. function ResourcePool:loadResourceWithName(path, name)
  80. local retVal = Polycore.ResourcePool_loadResourceWithName(self.__ptr, path, name)
  81. if retVal == nil then return nil end
  82. local __c = _G["Resource"]("__skip_ptr__")
  83. __c.__ptr = retVal
  84. return __c
  85. end
  86. function ResourcePool:getResource(resourceType, resourceName)
  87. local retVal = Polycore.ResourcePool_getResource(self.__ptr, resourceType, resourceName)
  88. if retVal == nil then return nil end
  89. local __c = _G["Resource"]("__skip_ptr__")
  90. __c.__ptr = retVal
  91. return __c
  92. end
  93. function ResourcePool:getName()
  94. local retVal = Polycore.ResourcePool_getName(self.__ptr)
  95. return retVal
  96. end
  97. function ResourcePool:setName(name)
  98. local retVal = Polycore.ResourcePool_setName(self.__ptr, name)
  99. end
  100. function ResourcePool:getResourceByPath(resourcePath)
  101. local retVal = Polycore.ResourcePool_getResourceByPath(self.__ptr, resourcePath)
  102. if retVal == nil then return nil end
  103. local __c = _G["Resource"]("__skip_ptr__")
  104. __c.__ptr = retVal
  105. return __c
  106. end
  107. function ResourcePool:Update(elapsed)
  108. local retVal = Polycore.ResourcePool_Update(self.__ptr, elapsed)
  109. end
  110. function ResourcePool:getResources(resourceType)
  111. local retVal = Polycore.ResourcePool_getResources(self.__ptr, resourceType)
  112. if retVal == nil then return nil end
  113. for i=1,count(retVal) do
  114. local __c = _G["Resource"]("__skip_ptr__")
  115. __c.__ptr = retVal[i]
  116. retVal[i] = __c
  117. end
  118. return retVal
  119. end
  120. function ResourcePool:checkForChangedFiles()
  121. local retVal = Polycore.ResourcePool_checkForChangedFiles(self.__ptr)
  122. end
  123. function ResourcePool:__delete()
  124. if self then Polycore.delete_ResourcePool(self.__ptr) end
  125. end