""" This is an attempt at a CFFI dynamic (ABI) binding. It was failing in the exactly same place the ctypes binding fails, accessing materials of a model. But now it __seems__ to work """ import platform # Probably unnecessary, just covering all bases in case people add or remove dlls MAC_NAMES = ['libraylib.2.6.0.dylib', 'libraylib.261.dylib', 'libraylib.dylib'] LINUX_NAMES = ['libraylib.so.2.6.0','libraylib.so.2', 'libraylib.so'] WINDOWS_NAMES = ['raylib.dll', 'libraylib.dll'] if platform.system() == "Darwin": NAMES_TO_TRY = MAC_NAMES elif platform.system() == "Linux": NAMES_TO_TRY = LINUX_NAMES elif platform.system() == "Windows": NAMES_TO_TRY = WINDOWS_NAMES else: NAMES_TO_TRY = MAC_NAMES + LINUX_NAMES + WINDOWS_NAMES import pathlib MODULE = pathlib.Path(__file__).parent.parent from cffi import FFI ffi = FFI() ffi.cdef(open(MODULE / "raylib_modified.h").read().replace('RLAPI ', '')) for name in NAMES_TO_TRY: file = str(MODULE)+"/dynamic/"+name try: raylib = ffi.dlopen(file) print("LOADED DYNAMICALLY SHARED LIB "+file) break except Exception as e: print(e)