Resource.lua 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. class "Resource"
  2. RESOURCE_TEXTURE = 0
  3. RESOURCE_MATERIAL = 1
  4. RESOURCE_SHADER = 2
  5. RESOURCE_PROGRAM = 3
  6. RESOURCE_MESH = 5
  7. RESOURCE_CUBEMAP = 6
  8. function Resource:Resource(...)
  9. for k,v in pairs(arg) do
  10. if type(v) == "table" then
  11. if v.__ptr ~= nil then
  12. arg[k] = v.__ptr
  13. end
  14. end
  15. end
  16. if self.__ptr == nil and arg[1] ~= "__skip_ptr__" then
  17. self.__ptr = Polycore.Resource(unpack(arg))
  18. Polycore.__ptr_lookup[self.__ptr] = self
  19. end
  20. end
  21. function Resource:getResourceName()
  22. local retVal = Polycore.Resource_getResourceName(self.__ptr)
  23. if retVal == nil then return nil end
  24. if Polycore.__ptr_lookup[retVal] ~= nil then
  25. return Polycore.__ptr_lookup[retVal]
  26. else
  27. Polycore.__ptr_lookup[retVal] = String("__skip_ptr__")
  28. Polycore.__ptr_lookup[retVal].__ptr = retVal
  29. return Polycore.__ptr_lookup[retVal]
  30. end
  31. end
  32. function Resource:getResourceType()
  33. local retVal = Polycore.Resource_getResourceType(self.__ptr)
  34. return retVal
  35. end
  36. function Resource:setResourceName(newName)
  37. local retVal = Polycore.Resource_setResourceName(self.__ptr, newName.__ptr)
  38. end
  39. function Resource:setResourcePath(path)
  40. local retVal = Polycore.Resource_setResourcePath(self.__ptr, path.__ptr)
  41. end
  42. function Resource:getResourcePath()
  43. local retVal = Polycore.Resource_getResourcePath(self.__ptr)
  44. if retVal == nil then return nil end
  45. if Polycore.__ptr_lookup[retVal] ~= nil then
  46. return Polycore.__ptr_lookup[retVal]
  47. else
  48. Polycore.__ptr_lookup[retVal] = String("__skip_ptr__")
  49. Polycore.__ptr_lookup[retVal].__ptr = retVal
  50. return Polycore.__ptr_lookup[retVal]
  51. end
  52. end
  53. function Resource:__delete()
  54. Polycore.__ptr_lookup[self.__ptr] = nil
  55. Polycore.delete_Resource(self.__ptr)
  56. end