BezierCurve.lua 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. class "BezierCurve"
  2. function BezierCurve:BezierCurve(...)
  3. for k,v in pairs(arg) do
  4. if type(v) == "table" then
  5. if v.__ptr ~= nil then
  6. arg[k] = v.__ptr
  7. end
  8. end
  9. end
  10. if self.__ptr == nil and arg[1] ~= "__skip_ptr__" then
  11. self.__ptr = Polycore.BezierCurve(unpack(arg))
  12. Polycore.__ptr_lookup[self.__ptr] = self
  13. end
  14. end
  15. function BezierCurve:getControlPoint(index)
  16. local retVal = Polycore.BezierCurve_getControlPoint(self.__ptr, index)
  17. if retVal == nil then return nil end
  18. if Polycore.__ptr_lookup[retVal] ~= nil then
  19. return Polycore.__ptr_lookup[retVal]
  20. else
  21. Polycore.__ptr_lookup[retVal] = BezierPoint("__skip_ptr__")
  22. Polycore.__ptr_lookup[retVal].__ptr = retVal
  23. return Polycore.__ptr_lookup[retVal]
  24. end
  25. end
  26. function BezierCurve:getNumControlPoints()
  27. local retVal = Polycore.BezierCurve_getNumControlPoints(self.__ptr)
  28. return retVal
  29. end
  30. function BezierCurve:addControlPoint(p1x, p1y, p1z, p2x, p2y, p2z, p3x, p3y, p3z)
  31. local retVal = Polycore.BezierCurve_addControlPoint(self.__ptr, p1x, p1y, p1z, p2x, p2y, p2z, p3x, p3y, p3z)
  32. end
  33. function BezierCurve:addControlPoint3dWithHandles(p1x, p1y, p1z, p2x, p2y, p2z, p3x, p3y, p3z)
  34. local retVal = Polycore.BezierCurve_addControlPoint3dWithHandles(self.__ptr, p1x, p1y, p1z, p2x, p2y, p2z, p3x, p3y, p3z)
  35. end
  36. function BezierCurve:addControlPoint3d(x, y, z)
  37. local retVal = Polycore.BezierCurve_addControlPoint3d(self.__ptr, x, y, z)
  38. end
  39. function BezierCurve:addControlPoint2dWithHandles(p1x, p1y, p2x, p2y, p3x, p3y)
  40. local retVal = Polycore.BezierCurve_addControlPoint2dWithHandles(self.__ptr, p1x, p1y, p2x, p2y, p3x, p3y)
  41. end
  42. function BezierCurve:addControlPoint2d(x, y)
  43. local retVal = Polycore.BezierCurve_addControlPoint2d(self.__ptr, x, y)
  44. end
  45. function BezierCurve:getHeightAt(a)
  46. local retVal = Polycore.BezierCurve_getHeightAt(self.__ptr, a)
  47. return retVal
  48. end
  49. function BezierCurve:getPointAt(a)
  50. local retVal = Polycore.BezierCurve_getPointAt(self.__ptr, a)
  51. if retVal == nil then return nil end
  52. if Polycore.__ptr_lookup[retVal] ~= nil then
  53. return Polycore.__ptr_lookup[retVal]
  54. else
  55. Polycore.__ptr_lookup[retVal] = Vector3("__skip_ptr__")
  56. Polycore.__ptr_lookup[retVal].__ptr = retVal
  57. return Polycore.__ptr_lookup[retVal]
  58. end
  59. end
  60. function BezierCurve:getPointBetween(a, bp1, bp2)
  61. local retVal = Polycore.BezierCurve_getPointBetween(self.__ptr, a, bp1.__ptr, bp2.__ptr)
  62. if retVal == nil then return nil end
  63. if Polycore.__ptr_lookup[retVal] ~= nil then
  64. return Polycore.__ptr_lookup[retVal]
  65. else
  66. Polycore.__ptr_lookup[retVal] = Vector3("__skip_ptr__")
  67. Polycore.__ptr_lookup[retVal].__ptr = retVal
  68. return Polycore.__ptr_lookup[retVal]
  69. end
  70. end
  71. function BezierCurve:rebuildBuffers()
  72. local retVal = Polycore.BezierCurve_rebuildBuffers(self.__ptr)
  73. end
  74. function BezierCurve:__delete()
  75. Polycore.__ptr_lookup[self.__ptr] = nil
  76. Polycore.delete_BezierCurve(self.__ptr)
  77. end