searches assimp-library automatically
git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@151 67173fc5-114c-0410-ac8e-9d2fd5bffc1fpull/1/head
parent
b50b8b3f43
commit
398879779e
|
@ -0,0 +1,11 @@
|
||||||
|
#-*- coding: UTF-8 -*-
|
||||||
|
|
||||||
|
"""
|
||||||
|
All possible errors.
|
||||||
|
"""
|
||||||
|
|
||||||
|
class AssimpError(BaseException):
|
||||||
|
"""
|
||||||
|
If an internal error occures.
|
||||||
|
"""
|
||||||
|
pass
|
|
@ -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"
|
|
@ -10,31 +10,19 @@ import structs
|
||||||
import ctypes
|
import ctypes
|
||||||
import os
|
import os
|
||||||
import helper
|
import helper
|
||||||
|
from errors import AssimpError
|
||||||
|
|
||||||
|
|
||||||
#get the assimp path
|
#get the assimp path
|
||||||
LIBRARY = os.path.join(os.path.dirname(__file__), "assimp.so")
|
LIBRARY = os.path.join(os.path.dirname(__file__), "assimp.so")
|
||||||
|
|
||||||
|
|
||||||
class AssimpError(BaseException):
|
|
||||||
"""
|
|
||||||
If ann internal error occures.
|
|
||||||
"""
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class AssimpLib(object):
|
class AssimpLib(object):
|
||||||
from ctypes import POINTER
|
"""
|
||||||
|
Assimp-Singleton
|
||||||
#open library
|
"""
|
||||||
_dll = ctypes.cdll.LoadLibrary(LIBRARY)
|
load, release = helper.search_library()
|
||||||
|
|
||||||
#get functions
|
|
||||||
load = _dll.aiImportFile
|
|
||||||
load.restype = POINTER(structs.SCENE)
|
|
||||||
|
|
||||||
release = _dll.aiReleaseImport
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue