automatically deref pointers in pyray

This commit is contained in:
Richard Smith 2020-09-19 10:12:30 +01:00
parent 6854ec4a3e
commit 26e9f9cbf2
2 changed files with 6 additions and 4 deletions

View file

@ -9,14 +9,16 @@ class PyRay:
def makefunc(a): def makefunc(a):
#print("makefunc ",a) #print("makefunc ",a, ffi.typeof(a).args)
def func(self, *args): def func(self, *args):
modified_args = [] modified_args = []
for arg in args: for (c_arg, arg) in zip(ffi.typeof(a).args, args):
#print(arg, type(arg)) #print(arg, c_arg.kind)
if type(arg) == str: if type(arg) == str:
encoded = arg.encode('utf-8') encoded = arg.encode('utf-8')
modified_args.append(encoded) modified_args.append(encoded)
elif c_arg.kind == 'pointer':
modified_args.append(ffi.addressof(arg))
else: else:
modified_args.append(arg) modified_args.append(arg)
return a(*modified_args) return a(*modified_args)

View file

@ -26,7 +26,7 @@ rayhit = pyray.get_collision_ray_ground(ray, 0)
print(str(rayhit.position.x)) print(str(rayhit.position.x))
while not pyray.window_should_close(): while not pyray.window_should_close():
pyray.update_camera(pyray.pointer(camera)) pyray.update_camera(camera)
pyray.begin_drawing() pyray.begin_drawing()
pyray.clear_background(RAYWHITE) pyray.clear_background(RAYWHITE)
pyray.begin_mode_3d(camera) pyray.begin_mode_3d(camera)