|
@@ -4,9 +4,53 @@
|
|
Some fancy helper functions.
|
|
Some fancy helper functions.
|
|
"""
|
|
"""
|
|
|
|
|
|
|
|
+import os
|
|
|
|
+import ctypes
|
|
|
|
+import structs
|
|
|
|
+from errors import AssimpError
|
|
|
|
+from ctypes import POINTER
|
|
|
|
+
|
|
|
|
|
|
def vec2tuple(x):
|
|
def vec2tuple(x):
|
|
"""
|
|
"""
|
|
Converts a VECTOR3D to a Tuple
|
|
Converts a VECTOR3D to a Tuple
|
|
"""
|
|
"""
|
|
- return (x.x, x.y, x.z)
|
|
|
|
|
|
+ return (x.x, x.y, x.z)
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def search_library():
|
|
|
|
+ """
|
|
|
|
+ Loads the assimp-Library.
|
|
|
|
+
|
|
|
|
+ result (load-function, release-function)
|
|
|
|
+
|
|
|
|
+ exception AssimpError if no library is found
|
|
|
|
+ """
|
|
|
|
+ #this path
|
|
|
|
+ folder = os.path.dirname(__file__)
|
|
|
|
+
|
|
|
|
+ #test every file
|
|
|
|
+ for filename in os.listdir(folder):
|
|
|
|
+ library = os.path.join(folder, filename)
|
|
|
|
+
|
|
|
|
+ try:
|
|
|
|
+ dll = ctypes.cdll.LoadLibrary(library)
|
|
|
|
+ except:
|
|
|
|
+ #OK, this except is evil. But different OSs will throw different
|
|
|
|
+ #errors. So just ignore errors.
|
|
|
|
+ pass
|
|
|
|
+ else:
|
|
|
|
+ #get the functions
|
|
|
|
+ try:
|
|
|
|
+ load = dll.aiImportFile
|
|
|
|
+ release = dll.aiReleaseImport
|
|
|
|
+ except AttributeError:
|
|
|
|
+ #OK, this is a library, but it has not the functions we need
|
|
|
|
+ pass
|
|
|
|
+ else:
|
|
|
|
+ #Library found!
|
|
|
|
+ load.restype = POINTER(structs.SCENE)
|
|
|
|
+
|
|
|
|
+ return (load, release)
|
|
|
|
+
|
|
|
|
+ raise AssimpError, "assimp library not found"
|