From 2000a6ad9b0d555b73fdc568dd3808c3a53293e7 Mon Sep 17 00:00:00 2001 From: yyc12345 Date: Sat, 4 Nov 2023 21:58:58 +0800 Subject: [PATCH] update bmap python binding --- BMapBindings/BMapSharp/.gitkeep | 0 BMapBindings/PyBMap/.gitignore | 138 +++++ BMapBindings/PyBMap/__init__.py | 0 BMapBindings/PyBMap/bmap.py | 755 ++++++++++++++++++++++++ BMapBindings/PyBMap/bmap_wrapper.py | 110 ++++ BMapBindings/PyBMap/virtools_types.py | 194 ++++++ CodeGen/BMapBindings/dest/BMExports.hpp | 133 ----- CodeGen/BMapBindings/snippets/header.py | 16 +- 8 files changed, 1211 insertions(+), 135 deletions(-) create mode 100644 BMapBindings/BMapSharp/.gitkeep create mode 100644 BMapBindings/PyBMap/.gitignore create mode 100644 BMapBindings/PyBMap/__init__.py create mode 100644 BMapBindings/PyBMap/bmap.py create mode 100644 BMapBindings/PyBMap/bmap_wrapper.py create mode 100644 BMapBindings/PyBMap/virtools_types.py delete mode 100644 CodeGen/BMapBindings/dest/BMExports.hpp diff --git a/BMapBindings/BMapSharp/.gitkeep b/BMapBindings/BMapSharp/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/BMapBindings/PyBMap/.gitignore b/BMapBindings/PyBMap/.gitignore new file mode 100644 index 0000000..a81c8ee --- /dev/null +++ b/BMapBindings/PyBMap/.gitignore @@ -0,0 +1,138 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ diff --git a/BMapBindings/PyBMap/__init__.py b/BMapBindings/PyBMap/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/BMapBindings/PyBMap/bmap.py b/BMapBindings/PyBMap/bmap.py new file mode 100644 index 0000000..eb665c1 --- /dev/null +++ b/BMapBindings/PyBMap/bmap.py @@ -0,0 +1,755 @@ +import ctypes, os + +#region Type Defines + +class BMapException(Exception): + """ + The exception thrown by BMap bindings. + """ + pass + +bm_CKSTRING = ctypes.c_char_p +bm_CKSTRING_p = ctypes.POINTER(bm_CKSTRING) +bm_CKDWORD = ctypes.c_uint32 +bm_CKDWORD_p = ctypes.POINTER(bm_CKDWORD) +bm_CKDWORD_pp = ctypes.POINTER(bm_CKDWORD_p) +bm_CKWORD = ctypes.c_uint16 +bm_CKWORD_p = ctypes.POINTER(bm_CKWORD) +bm_CKWORD_pp = ctypes.POINTER(bm_CKWORD_p) +bm_CKID = ctypes.c_uint32 +bm_CKID_p = ctypes.POINTER(bm_CKID) +bm_CKID_pp = ctypes.POINTER(bm_CKID_p) +bm_CKFLOAT = ctypes.c_float +bm_CKFLOAT_p = ctypes.POINTER(bm_CKFLOAT) +bm_CKINT = ctypes.c_int32 +bm_CKBYTE = ctypes.c_uint8 +bm_CKBYTE_p = ctypes.POINTER(bm_CKBYTE) + +bm_enum = bm_CKDWORD +bm_enum_p = ctypes.POINTER(bm_enum) +bm_bool = ctypes.c_bool +bm_bool_p = ctypes.POINTER(bm_bool) +bm_void_p = ctypes.c_void_p +bm_void_pp = ctypes.POINTER(ctypes.c_void_p) + +class bm_VxVector2(ctypes.Structure): + _fields_ = [ + ('x', bm_CKFLOAT), + ('y', bm_CKFLOAT), + ] +bm_VxVector2_p = ctypes.POINTER(bm_VxVector2) +bm_VxVector2_pp = ctypes.POINTER(bm_VxVector2_p) +class bm_VxVector3(ctypes.Structure): + _fields_ = [ + ('x', bm_CKFLOAT), + ('y', bm_CKFLOAT), + ('z', bm_CKFLOAT), + ] +bm_VxVector3_p = ctypes.POINTER(bm_VxVector3) +class bm_VxColor(ctypes.Structure): + _fields_ = [ + ('r', bm_CKFLOAT), + ('g', bm_CKFLOAT), + ('b', bm_CKFLOAT), + ('a', bm_CKFLOAT), + ] +bm_VxColor_p = ctypes.POINTER(bm_VxColor) +class bm_VxMatrix(ctypes.Structure): + _fields_ = list( + (f'i{idx}', bm_CKFLOAT) for idx in range(16) + ) +bm_VxMatrix_p = ctypes.POINTER(bm_VxMatrix) + +#endregion + +#region BMap Loader + +_g_BMapModule: ctypes.CDLL = None +try: + _g_BMapModule = ctypes.cdll.LoadLibrary( + os.path.join(os.path.dirname(__file__), "BMap.dll") + ) +except: + _g_BMapModule = None + +def is_bmap_available() -> bool: + return _g_BMapModule is not None + +def _bmap_error_check(result: bm_bool, func, args): + if not bm_bool.value: + raise BMapException("BMap operation failed.") + return result + +def _create_bmap_func(fct_name: str, fct_params: list[ctypes._SimpleCData]) -> ctypes._CFuncPtr: + if _g_BMapModule is None: return None + + cache: ctypes._CFuncPtr = getattr(_g_BMapModule, fct_name) + cache.argtypes = fct_params + cache.restype = bm_bool + cache.errcheck = _bmap_error_check + return cache + +#endregion + +#region Function Defines + +## BMInit +# @return True if no error, otherwise False. +BMInit = _create_bmap_func('BMInit', []) +## BMDispose +# @return True if no error, otherwise False. +BMDispose = _create_bmap_func('BMDispose', []) +## BMFile_Load +# @param file_name[in] Type: LibCmo::CKSTRING. +# @param temp_folder[in] Type: LibCmo::CKSTRING. +# @param texture_folder[in] Type: LibCmo::CKSTRING. +# @param encoding_count[in] Type: LibCmo::CKDWORD. +# @param encodings[in] Type: LibCmo::CKSTRING*. +# @param out_file[out] Type: BMap::BMFile*. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMFile_Load = _create_bmap_func('BMFile_Load', [bm_CKSTRING, bm_CKSTRING, bm_CKSTRING, bm_CKDWORD, bm_CKSTRING_p, bm_void_pp]) +## BMFile_Create +# @param temp_folder[in] Type: LibCmo::CKSTRING. +# @param texture_folder[in] Type: LibCmo::CKSTRING. +# @param encoding_count[in] Type: LibCmo::CKDWORD. +# @param encodings[in] Type: LibCmo::CKSTRING*. +# @param out_file[out] Type: BMap::BMFile*. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMFile_Create = _create_bmap_func('BMFile_Create', [bm_CKSTRING, bm_CKSTRING, bm_CKDWORD, bm_CKSTRING_p, bm_void_pp]) +## BMFile_Save +# @param map_file[in] Type: BMap::BMFile*. +# @param file_name[in] Type: LibCmo::CKSTRING. +# @param compreess_level[in] Type: LibCmo::CKINT. +# @return True if no error, otherwise False. +BMFile_Save = _create_bmap_func('BMFile_Save', [bm_void_p, bm_CKSTRING, bm_CKINT]) +## BMFile_Free +# @param map_file[in] Type: BMap::BMFile*. +# @return True if no error, otherwise False. +BMFile_Free = _create_bmap_func('BMFile_Free', [bm_void_p]) +## BMFile_GetGroupCount +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param out_count[out] Type: LibCmo::CKDWORD. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMFile_GetGroupCount = _create_bmap_func('BMFile_GetGroupCount', [bm_void_p, bm_CKDWORD_p]) +## BMFile_GetGroup +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param idx[in] Type: LibCmo::CKDWORD. +# @param out_id[out] Type: LibCmo::CK2::CK_ID. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMFile_GetGroup = _create_bmap_func('BMFile_GetGroup', [bm_void_p, bm_CKDWORD, bm_CKID_p]) +## BMFile_CreateGroup +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param out_id[out] Type: LibCmo::CK2::CK_ID. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMFile_CreateGroup = _create_bmap_func('BMFile_CreateGroup', [bm_void_p, bm_CKID_p]) +## BMFile_Get3dObjectCount +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param out_count[out] Type: LibCmo::CKDWORD. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMFile_Get3dObjectCount = _create_bmap_func('BMFile_Get3dObjectCount', [bm_void_p, bm_CKDWORD_p]) +## BMFile_Get3dObject +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param idx[in] Type: LibCmo::CKDWORD. +# @param out_id[out] Type: LibCmo::CK2::CK_ID. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMFile_Get3dObject = _create_bmap_func('BMFile_Get3dObject', [bm_void_p, bm_CKDWORD, bm_CKID_p]) +## BMFile_Create3dObject +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param out_id[out] Type: LibCmo::CK2::CK_ID. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMFile_Create3dObject = _create_bmap_func('BMFile_Create3dObject', [bm_void_p, bm_CKID_p]) +## BMFile_GetMeshCount +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param out_count[out] Type: LibCmo::CKDWORD. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMFile_GetMeshCount = _create_bmap_func('BMFile_GetMeshCount', [bm_void_p, bm_CKDWORD_p]) +## BMFile_GetMesh +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param idx[in] Type: LibCmo::CKDWORD. +# @param out_id[out] Type: LibCmo::CK2::CK_ID. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMFile_GetMesh = _create_bmap_func('BMFile_GetMesh', [bm_void_p, bm_CKDWORD, bm_CKID_p]) +## BMFile_CreateMesh +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param out_id[out] Type: LibCmo::CK2::CK_ID. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMFile_CreateMesh = _create_bmap_func('BMFile_CreateMesh', [bm_void_p, bm_CKID_p]) +## BMFile_GetMaterialCount +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param out_count[out] Type: LibCmo::CKDWORD. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMFile_GetMaterialCount = _create_bmap_func('BMFile_GetMaterialCount', [bm_void_p, bm_CKDWORD_p]) +## BMFile_GetMaterial +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param idx[in] Type: LibCmo::CKDWORD. +# @param out_id[out] Type: LibCmo::CK2::CK_ID. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMFile_GetMaterial = _create_bmap_func('BMFile_GetMaterial', [bm_void_p, bm_CKDWORD, bm_CKID_p]) +## BMFile_CreateMaterial +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param out_id[out] Type: LibCmo::CK2::CK_ID. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMFile_CreateMaterial = _create_bmap_func('BMFile_CreateMaterial', [bm_void_p, bm_CKID_p]) +## BMFile_GetTextureCount +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param out_count[out] Type: LibCmo::CKDWORD. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMFile_GetTextureCount = _create_bmap_func('BMFile_GetTextureCount', [bm_void_p, bm_CKDWORD_p]) +## BMFile_GetTexture +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param idx[in] Type: LibCmo::CKDWORD. +# @param out_id[out] Type: LibCmo::CK2::CK_ID. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMFile_GetTexture = _create_bmap_func('BMFile_GetTexture', [bm_void_p, bm_CKDWORD, bm_CKID_p]) +## BMFile_CreateTexture +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param out_id[out] Type: LibCmo::CK2::CK_ID. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMFile_CreateTexture = _create_bmap_func('BMFile_CreateTexture', [bm_void_p, bm_CKID_p]) +## BMMeshTrans_New +# @param out_trans[out] Type: BMap::BMMeshTransition*. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMeshTrans_New = _create_bmap_func('BMMeshTrans_New', [bm_void_pp]) +## BMMeshTrans_Delete +# @param trans[in] Type: BMap::BMMeshTransition*. +# @return True if no error, otherwise False. +BMMeshTrans_Delete = _create_bmap_func('BMMeshTrans_Delete', [bm_void_p]) +## BMMeshTrans_PrepareVertexCount +# @param trans[in] Type: BMap::BMMeshTransition*. The pointer to corresponding BMMeshTransition. +# @param count[in] Type: LibCmo::CKDWORD. +# @return True if no error, otherwise False. +BMMeshTrans_PrepareVertexCount = _create_bmap_func('BMMeshTrans_PrepareVertexCount', [bm_void_p, bm_CKDWORD]) +## BMMeshTrans_PrepareVertex +# @param trans[in] Type: BMap::BMMeshTransition*. The pointer to corresponding BMMeshTransition. +# @param out_mem[out] Type: LibCmo::VxMath::VxVector3*. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMeshTrans_PrepareVertex = _create_bmap_func('BMMeshTrans_PrepareVertex', [bm_void_p, bm_VxVector2_pp]) +## BMMeshTrans_PrepareNormalCount +# @param trans[in] Type: BMap::BMMeshTransition*. The pointer to corresponding BMMeshTransition. +# @param count[in] Type: LibCmo::CKDWORD. +# @return True if no error, otherwise False. +BMMeshTrans_PrepareNormalCount = _create_bmap_func('BMMeshTrans_PrepareNormalCount', [bm_void_p, bm_CKDWORD]) +## BMMeshTrans_PrepareNormal +# @param trans[in] Type: BMap::BMMeshTransition*. The pointer to corresponding BMMeshTransition. +# @param out_mem[out] Type: LibCmo::VxMath::VxVector3*. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMeshTrans_PrepareNormal = _create_bmap_func('BMMeshTrans_PrepareNormal', [bm_void_p, bm_VxVector2_pp]) +## BMMeshTrans_PrepareUVCount +# @param trans[in] Type: BMap::BMMeshTransition*. The pointer to corresponding BMMeshTransition. +# @param count[in] Type: LibCmo::CKDWORD. +# @return True if no error, otherwise False. +BMMeshTrans_PrepareUVCount = _create_bmap_func('BMMeshTrans_PrepareUVCount', [bm_void_p, bm_CKDWORD]) +## BMMeshTrans_PrepareUV +# @param trans[in] Type: BMap::BMMeshTransition*. The pointer to corresponding BMMeshTransition. +# @param out_mem[out] Type: LibCmo::VxMath::VxVector2*. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMeshTrans_PrepareUV = _create_bmap_func('BMMeshTrans_PrepareUV', [bm_void_p, bm_VxVector2_pp]) +## BMMeshTrans_PrepareMtlSlotCount +# @param trans[in] Type: BMap::BMMeshTransition*. The pointer to corresponding BMMeshTransition. +# @param count[in] Type: LibCmo::CKDWORD. +# @return True if no error, otherwise False. +BMMeshTrans_PrepareMtlSlotCount = _create_bmap_func('BMMeshTrans_PrepareMtlSlotCount', [bm_void_p, bm_CKDWORD]) +## BMMeshTrans_PrepareMtlSlot +# @param trans[in] Type: BMap::BMMeshTransition*. The pointer to corresponding BMMeshTransition. +# @param out_mem[out] Type: LibCmo::CK2::CK_ID*. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMeshTrans_PrepareMtlSlot = _create_bmap_func('BMMeshTrans_PrepareMtlSlot', [bm_void_p, bm_CKID_pp]) +## BMMeshTrans_PrepareFaceCount +# @param trans[in] Type: BMap::BMMeshTransition*. The pointer to corresponding BMMeshTransition. +# @param count[in] Type: LibCmo::CKDWORD. +# @return True if no error, otherwise False. +BMMeshTrans_PrepareFaceCount = _create_bmap_func('BMMeshTrans_PrepareFaceCount', [bm_void_p, bm_CKDWORD]) +## BMMeshTrans_PrepareFaceVertexIndices +# @param trans[in] Type: BMap::BMMeshTransition*. The pointer to corresponding BMMeshTransition. +# @param out_mem[out] Type: LibCmo::CKDWORD*. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMeshTrans_PrepareFaceVertexIndices = _create_bmap_func('BMMeshTrans_PrepareFaceVertexIndices', [bm_void_p, bm_CKDWORD_pp]) +## BMMeshTrans_PrepareFaceNormalIndices +# @param trans[in] Type: BMap::BMMeshTransition*. The pointer to corresponding BMMeshTransition. +# @param out_mem[out] Type: LibCmo::CKDWORD*. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMeshTrans_PrepareFaceNormalIndices = _create_bmap_func('BMMeshTrans_PrepareFaceNormalIndices', [bm_void_p, bm_CKDWORD_pp]) +## BMMeshTrans_PrepareFaceUVIndices +# @param trans[in] Type: BMap::BMMeshTransition*. The pointer to corresponding BMMeshTransition. +# @param out_mem[out] Type: LibCmo::CKDWORD*. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMeshTrans_PrepareFaceUVIndices = _create_bmap_func('BMMeshTrans_PrepareFaceUVIndices', [bm_void_p, bm_CKDWORD_pp]) +## BMMeshTrans_PrepareFaceMtlSlot +# @param trans[in] Type: BMap::BMMeshTransition*. The pointer to corresponding BMMeshTransition. +# @param out_mem[out] Type: LibCmo::CKDWORD*. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMeshTrans_PrepareFaceMtlSlot = _create_bmap_func('BMMeshTrans_PrepareFaceMtlSlot', [bm_void_p, bm_CKDWORD_pp]) +## BMMeshTrans_Parse +# @param trans[in] Type: BMap::BMMeshTransition*. The pointer to corresponding BMMeshTransition. +# @param bmfile[in] Type: BMap::BMFile*. +# @param objid[in] Type: LibCmo::CK2::CK_ID. +# @return True if no error, otherwise False. +BMMeshTrans_Parse = _create_bmap_func('BMMeshTrans_Parse', [bm_void_p, bm_void_p, bm_CKID]) +## BMObject_GetName +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_name[out] Type: LibCmo::CKSTRING. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMObject_GetName = _create_bmap_func('BMObject_GetName', [bm_void_p, bm_CKID, bm_CKSTRING_p]) +## BMObject_SetName +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param name[in] Type: LibCmo::CKSTRING. +# @return True if no error, otherwise False. +BMObject_SetName = _create_bmap_func('BMObject_SetName', [bm_void_p, bm_CKID, bm_CKSTRING]) +## BMGroup_AddObject +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param memberid[in] Type: LibCmo::CK2::CK_ID. +# @return True if no error, otherwise False. +BMGroup_AddObject = _create_bmap_func('BMGroup_AddObject', [bm_void_p, bm_CKID, bm_CKID]) +## BMGroup_GetObjectCount +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_count[out] Type: LibCmo::CKDWORD. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMGroup_GetObjectCount = _create_bmap_func('BMGroup_GetObjectCount', [bm_void_p, bm_CKID, bm_CKDWORD_p]) +## BMGroup_GetObject +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param pos[in] Type: LibCmo::CKDWORD. +# @param out_objid[out] Type: LibCmo::CK2::CK_ID. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMGroup_GetObject = _create_bmap_func('BMGroup_GetObject', [bm_void_p, bm_CKID, bm_CKDWORD, bm_CKID_p]) +## BMTexture_GetFileName +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_filename[out] Type: LibCmo::CKSTRING. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMTexture_GetFileName = _create_bmap_func('BMTexture_GetFileName', [bm_void_p, bm_CKID, bm_CKSTRING_p]) +## BMTexture_LoadImage +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param filename[in] Type: LibCmo::CKSTRING. +# @return True if no error, otherwise False. +BMTexture_LoadImage = _create_bmap_func('BMTexture_LoadImage', [bm_void_p, bm_CKID, bm_CKSTRING]) +## BMTexture_SaveImage +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param filename[in] Type: LibCmo::CKSTRING. +# @return True if no error, otherwise False. +BMTexture_SaveImage = _create_bmap_func('BMTexture_SaveImage', [bm_void_p, bm_CKID, bm_CKSTRING]) +## BMTexture_GetSaveOptions +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_saveopt[out] Type: LibCmo::CK2::CK_TEXTURE_SAVEOPTIONS. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMTexture_GetSaveOptions = _create_bmap_func('BMTexture_GetSaveOptions', [bm_void_p, bm_CKID, bm_enum_p]) +## BMTexture_SetSaveOptions +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param saveopt[in] Type: LibCmo::CK2::CK_TEXTURE_SAVEOPTIONS. +# @return True if no error, otherwise False. +BMTexture_SetSaveOptions = _create_bmap_func('BMTexture_SetSaveOptions', [bm_void_p, bm_CKID, bm_enum]) +## BMTexture_GetVideoFormat +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_vfmt[out] Type: LibCmo::VxMath::VX_PIXELFORMAT. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMTexture_GetVideoFormat = _create_bmap_func('BMTexture_GetVideoFormat', [bm_void_p, bm_CKID, bm_enum_p]) +## BMTexture_SetVideoFormat +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param vfmt[in] Type: LibCmo::VxMath::VX_PIXELFORMAT. +# @return True if no error, otherwise False. +BMTexture_SetVideoFormat = _create_bmap_func('BMTexture_SetVideoFormat', [bm_void_p, bm_CKID, bm_enum]) +## BMMaterial_GetDiffuse +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_val[out] Type: LibCmo::VxMath::VxColor. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMaterial_GetDiffuse = _create_bmap_func('BMMaterial_GetDiffuse', [bm_void_p, bm_CKID, bm_VxColor_p]) +## BMMaterial_SetDiffuse +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param col[in] Type: LibCmo::VxMath::VxColor. +# @return True if no error, otherwise False. +BMMaterial_SetDiffuse = _create_bmap_func('BMMaterial_SetDiffuse', [bm_void_p, bm_CKID, bm_VxColor]) +## BMMaterial_GetAmbient +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_val[out] Type: LibCmo::VxMath::VxColor. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMaterial_GetAmbient = _create_bmap_func('BMMaterial_GetAmbient', [bm_void_p, bm_CKID, bm_VxColor_p]) +## BMMaterial_SetAmbient +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param col[in] Type: LibCmo::VxMath::VxColor. +# @return True if no error, otherwise False. +BMMaterial_SetAmbient = _create_bmap_func('BMMaterial_SetAmbient', [bm_void_p, bm_CKID, bm_VxColor]) +## BMMaterial_GetSpecular +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_val[out] Type: LibCmo::VxMath::VxColor. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMaterial_GetSpecular = _create_bmap_func('BMMaterial_GetSpecular', [bm_void_p, bm_CKID, bm_VxColor_p]) +## BMMaterial_SetSpecular +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param col[in] Type: LibCmo::VxMath::VxColor. +# @return True if no error, otherwise False. +BMMaterial_SetSpecular = _create_bmap_func('BMMaterial_SetSpecular', [bm_void_p, bm_CKID, bm_VxColor]) +## BMMaterial_GetEmissive +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_val[out] Type: LibCmo::VxMath::VxColor. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMaterial_GetEmissive = _create_bmap_func('BMMaterial_GetEmissive', [bm_void_p, bm_CKID, bm_VxColor_p]) +## BMMaterial_SetEmissive +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param col[in] Type: LibCmo::VxMath::VxColor. +# @return True if no error, otherwise False. +BMMaterial_SetEmissive = _create_bmap_func('BMMaterial_SetEmissive', [bm_void_p, bm_CKID, bm_VxColor]) +## BMMaterial_GetSpecularPower +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_val[out] Type: LibCmo::CKFLOAT. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMaterial_GetSpecularPower = _create_bmap_func('BMMaterial_GetSpecularPower', [bm_void_p, bm_CKID, bm_CKFLOAT_p]) +## BMMaterial_SetSpecularPower +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param val[in] Type: LibCmo::CKFLOAT. +# @return True if no error, otherwise False. +BMMaterial_SetSpecularPower = _create_bmap_func('BMMaterial_SetSpecularPower', [bm_void_p, bm_CKID, bm_CKFLOAT]) +## BMMaterial_GetTexture +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_texid[out] Type: LibCmo::CK2::CK_ID. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMaterial_GetTexture = _create_bmap_func('BMMaterial_GetTexture', [bm_void_p, bm_CKID, bm_CKID_p]) +## BMMaterial_SetTexture +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param texid[in] Type: LibCmo::CK2::CK_ID. +# @return True if no error, otherwise False. +BMMaterial_SetTexture = _create_bmap_func('BMMaterial_SetTexture', [bm_void_p, bm_CKID, bm_CKID]) +## BMMaterial_GetTextureBorderColor +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_val[out] Type: LibCmo::CKDWORD. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMaterial_GetTextureBorderColor = _create_bmap_func('BMMaterial_GetTextureBorderColor', [bm_void_p, bm_CKID, bm_CKDWORD_p]) +## BMMaterial_SetTextureBorderColor +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param val[in] Type: LibCmo::CKDWORD. +# @return True if no error, otherwise False. +BMMaterial_SetTextureBorderColor = _create_bmap_func('BMMaterial_SetTextureBorderColor', [bm_void_p, bm_CKID, bm_CKDWORD]) +## BMMaterial_GetTextureBlendMode +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_val[out] Type: LibCmo::VxMath::VXTEXTURE_BLENDMODE. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMaterial_GetTextureBlendMode = _create_bmap_func('BMMaterial_GetTextureBlendMode', [bm_void_p, bm_CKID, bm_enum_p]) +## BMMaterial_SetTextureBlendMode +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param val[in] Type: LibCmo::VxMath::VXTEXTURE_BLENDMODE. +# @return True if no error, otherwise False. +BMMaterial_SetTextureBlendMode = _create_bmap_func('BMMaterial_SetTextureBlendMode', [bm_void_p, bm_CKID, bm_enum]) +## BMMaterial_GetTextureMinMode +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_val[out] Type: LibCmo::VxMath::VXTEXTURE_FILTERMODE. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMaterial_GetTextureMinMode = _create_bmap_func('BMMaterial_GetTextureMinMode', [bm_void_p, bm_CKID, bm_enum_p]) +## BMMaterial_SetTextureMinMode +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param val[in] Type: LibCmo::VxMath::VXTEXTURE_FILTERMODE. +# @return True if no error, otherwise False. +BMMaterial_SetTextureMinMode = _create_bmap_func('BMMaterial_SetTextureMinMode', [bm_void_p, bm_CKID, bm_enum]) +## BMMaterial_GetTextureMagMode +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_val[out] Type: LibCmo::VxMath::VXTEXTURE_FILTERMODE. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMaterial_GetTextureMagMode = _create_bmap_func('BMMaterial_GetTextureMagMode', [bm_void_p, bm_CKID, bm_enum_p]) +## BMMaterial_SetTextureMagMode +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param val[in] Type: LibCmo::VxMath::VXTEXTURE_FILTERMODE. +# @return True if no error, otherwise False. +BMMaterial_SetTextureMagMode = _create_bmap_func('BMMaterial_SetTextureMagMode', [bm_void_p, bm_CKID, bm_enum]) +## BMMaterial_GetTextureAddressMode +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_val[out] Type: LibCmo::VxMath::VXTEXTURE_ADDRESSMODE. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMaterial_GetTextureAddressMode = _create_bmap_func('BMMaterial_GetTextureAddressMode', [bm_void_p, bm_CKID, bm_enum_p]) +## BMMaterial_SetTextureAddressMode +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param val[in] Type: LibCmo::VxMath::VXTEXTURE_ADDRESSMODE. +# @return True if no error, otherwise False. +BMMaterial_SetTextureAddressMode = _create_bmap_func('BMMaterial_SetTextureAddressMode', [bm_void_p, bm_CKID, bm_enum]) +## BMMaterial_GetSourceBlend +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_val[out] Type: LibCmo::VxMath::VXBLEND_MODE. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMaterial_GetSourceBlend = _create_bmap_func('BMMaterial_GetSourceBlend', [bm_void_p, bm_CKID, bm_enum_p]) +## BMMaterial_SetSourceBlend +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param val[in] Type: LibCmo::VxMath::VXBLEND_MODE. +# @return True if no error, otherwise False. +BMMaterial_SetSourceBlend = _create_bmap_func('BMMaterial_SetSourceBlend', [bm_void_p, bm_CKID, bm_enum]) +## BMMaterial_GetDestBlend +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_val[out] Type: LibCmo::VxMath::VXBLEND_MODE. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMaterial_GetDestBlend = _create_bmap_func('BMMaterial_GetDestBlend', [bm_void_p, bm_CKID, bm_enum_p]) +## BMMaterial_SetDestBlend +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param val[in] Type: LibCmo::VxMath::VXBLEND_MODE. +# @return True if no error, otherwise False. +BMMaterial_SetDestBlend = _create_bmap_func('BMMaterial_SetDestBlend', [bm_void_p, bm_CKID, bm_enum]) +## BMMaterial_GetFillMode +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_val[out] Type: LibCmo::VxMath::VXFILL_MODE. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMaterial_GetFillMode = _create_bmap_func('BMMaterial_GetFillMode', [bm_void_p, bm_CKID, bm_enum_p]) +## BMMaterial_SetFillMode +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param val[in] Type: LibCmo::VxMath::VXFILL_MODE. +# @return True if no error, otherwise False. +BMMaterial_SetFillMode = _create_bmap_func('BMMaterial_SetFillMode', [bm_void_p, bm_CKID, bm_enum]) +## BMMaterial_GetShadeMode +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_val[out] Type: LibCmo::VxMath::VXSHADE_MODE. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMaterial_GetShadeMode = _create_bmap_func('BMMaterial_GetShadeMode', [bm_void_p, bm_CKID, bm_enum_p]) +## BMMaterial_SetShadeMode +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param val[in] Type: LibCmo::VxMath::VXSHADE_MODE. +# @return True if no error, otherwise False. +BMMaterial_SetShadeMode = _create_bmap_func('BMMaterial_SetShadeMode', [bm_void_p, bm_CKID, bm_enum]) +## BMMaterial_GetAlphaTestEnabled +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_val[out] Type: bool. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMaterial_GetAlphaTestEnabled = _create_bmap_func('BMMaterial_GetAlphaTestEnabled', [bm_void_p, bm_CKID, bm_bool_p]) +## BMMaterial_SetAlphaTestEnabled +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param enabled[in] Type: bool. +# @return True if no error, otherwise False. +BMMaterial_SetAlphaTestEnabled = _create_bmap_func('BMMaterial_SetAlphaTestEnabled', [bm_void_p, bm_CKID, bm_bool]) +## BMMaterial_GetAlphaBlendEnabled +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_val[out] Type: bool. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMaterial_GetAlphaBlendEnabled = _create_bmap_func('BMMaterial_GetAlphaBlendEnabled', [bm_void_p, bm_CKID, bm_bool_p]) +## BMMaterial_SetAlphaBlendEnabled +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param enabled[in] Type: bool. +# @return True if no error, otherwise False. +BMMaterial_SetAlphaBlendEnabled = _create_bmap_func('BMMaterial_SetAlphaBlendEnabled', [bm_void_p, bm_CKID, bm_bool]) +## BMMaterial_GetPerspectiveCorrectionEnabled +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_val[out] Type: bool. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMaterial_GetPerspectiveCorrectionEnabled = _create_bmap_func('BMMaterial_GetPerspectiveCorrectionEnabled', [bm_void_p, bm_CKID, bm_bool_p]) +## BMMaterial_SetPerspectiveCorrectionEnabled +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param enabled[in] Type: bool. +# @return True if no error, otherwise False. +BMMaterial_SetPerspectiveCorrectionEnabled = _create_bmap_func('BMMaterial_SetPerspectiveCorrectionEnabled', [bm_void_p, bm_CKID, bm_bool]) +## BMMaterial_GetZWriteEnabled +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_val[out] Type: bool. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMaterial_GetZWriteEnabled = _create_bmap_func('BMMaterial_GetZWriteEnabled', [bm_void_p, bm_CKID, bm_bool_p]) +## BMMaterial_SetZWriteEnabled +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param enabled[in] Type: bool. +# @return True if no error, otherwise False. +BMMaterial_SetZWriteEnabled = _create_bmap_func('BMMaterial_SetZWriteEnabled', [bm_void_p, bm_CKID, bm_bool]) +## BMMaterial_GetTwoSidedEnabled +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_val[out] Type: bool. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMaterial_GetTwoSidedEnabled = _create_bmap_func('BMMaterial_GetTwoSidedEnabled', [bm_void_p, bm_CKID, bm_bool_p]) +## BMMaterial_SetTwoSidedEnabled +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param enabled[in] Type: bool. +# @return True if no error, otherwise False. +BMMaterial_SetTwoSidedEnabled = _create_bmap_func('BMMaterial_SetTwoSidedEnabled', [bm_void_p, bm_CKID, bm_bool]) +## BMMaterial_GetAlphaRef +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_val[out] Type: LibCmo::CKBYTE. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMaterial_GetAlphaRef = _create_bmap_func('BMMaterial_GetAlphaRef', [bm_void_p, bm_CKID, bm_CKBYTE_p]) +## BMMaterial_SetAlphaRef +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param val[in] Type: LibCmo::CKBYTE. +# @return True if no error, otherwise False. +BMMaterial_SetAlphaRef = _create_bmap_func('BMMaterial_SetAlphaRef', [bm_void_p, bm_CKID, bm_CKBYTE]) +## BMMaterial_GetAlphaFunc +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_val[out] Type: LibCmo::VxMath::VXCMPFUNC. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMaterial_GetAlphaFunc = _create_bmap_func('BMMaterial_GetAlphaFunc', [bm_void_p, bm_CKID, bm_enum_p]) +## BMMaterial_SetAlphaFunc +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param val[in] Type: LibCmo::VxMath::VXCMPFUNC. +# @return True if no error, otherwise False. +BMMaterial_SetAlphaFunc = _create_bmap_func('BMMaterial_SetAlphaFunc', [bm_void_p, bm_CKID, bm_enum]) +## BMMaterial_GetZFunc +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_val[out] Type: LibCmo::VxMath::VXCMPFUNC. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMaterial_GetZFunc = _create_bmap_func('BMMaterial_GetZFunc', [bm_void_p, bm_CKID, bm_enum_p]) +## BMMaterial_SetZFunc +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param val[in] Type: LibCmo::VxMath::VXCMPFUNC. +# @return True if no error, otherwise False. +BMMaterial_SetZFunc = _create_bmap_func('BMMaterial_SetZFunc', [bm_void_p, bm_CKID, bm_enum]) +## BMMesh_GetVertexCount +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_count[out] Type: LibCmo::CKDWORD. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMesh_GetVertexCount = _create_bmap_func('BMMesh_GetVertexCount', [bm_void_p, bm_CKID, bm_CKDWORD_p]) +## BMMesh_SetVertexCount +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param count[in] Type: LibCmo::CKDWORD. +# @return True if no error, otherwise False. +BMMesh_SetVertexCount = _create_bmap_func('BMMesh_SetVertexCount', [bm_void_p, bm_CKID, bm_CKDWORD]) +## BMMesh_GetVertexPositions +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_mem[out] Type: LibCmo::VxMath::VxVector3*. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMesh_GetVertexPositions = _create_bmap_func('BMMesh_GetVertexPositions', [bm_void_p, bm_CKID, bm_VxVector2_pp]) +## BMMesh_GetVertexNormals +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_mem[out] Type: LibCmo::VxMath::VxVector3*. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMesh_GetVertexNormals = _create_bmap_func('BMMesh_GetVertexNormals', [bm_void_p, bm_CKID, bm_VxVector2_pp]) +## BMMesh_GetVertexUVs +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_mem[out] Type: LibCmo::VxMath::VxVector2*. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMesh_GetVertexUVs = _create_bmap_func('BMMesh_GetVertexUVs', [bm_void_p, bm_CKID, bm_VxVector2_pp]) +## BMMesh_GetFaceCount +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_count[out] Type: LibCmo::CKDWORD. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMesh_GetFaceCount = _create_bmap_func('BMMesh_GetFaceCount', [bm_void_p, bm_CKID, bm_CKDWORD_p]) +## BMMesh_SetFaceCount +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param count[in] Type: LibCmo::CKDWORD. +# @return True if no error, otherwise False. +BMMesh_SetFaceCount = _create_bmap_func('BMMesh_SetFaceCount', [bm_void_p, bm_CKID, bm_CKDWORD]) +## BMMesh_GetFaceIndices +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_mem[out] Type: LibCmo::CKWORD*. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMesh_GetFaceIndices = _create_bmap_func('BMMesh_GetFaceIndices', [bm_void_p, bm_CKID, bm_CKWORD_pp]) +## BMMesh_GetFaceMaterialSlotIndexs +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_mem[out] Type: LibCmo::CKWORD*. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMesh_GetFaceMaterialSlotIndexs = _create_bmap_func('BMMesh_GetFaceMaterialSlotIndexs', [bm_void_p, bm_CKID, bm_CKWORD_pp]) +## BMMesh_GetMaterialSlotCount +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_count[out] Type: LibCmo::CKDWORD. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMesh_GetMaterialSlotCount = _create_bmap_func('BMMesh_GetMaterialSlotCount', [bm_void_p, bm_CKID, bm_CKDWORD_p]) +## BMMesh_SetMaterialSlotCount +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param count[in] Type: LibCmo::CKDWORD. +# @return True if no error, otherwise False. +BMMesh_SetMaterialSlotCount = _create_bmap_func('BMMesh_SetMaterialSlotCount', [bm_void_p, bm_CKID, bm_CKDWORD]) +## BMMesh_GetMaterialSlot +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param index[in] Type: LibCmo::CKDWORD. +# @param out_mtlid[out] Type: LibCmo::CK2::CK_ID. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BMMesh_GetMaterialSlot = _create_bmap_func('BMMesh_GetMaterialSlot', [bm_void_p, bm_CKID, bm_CKDWORD, bm_CKID_p]) +## BMMesh_SetMaterialSlot +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param index[in] Type: LibCmo::CKDWORD. +# @param mtlid[in] Type: LibCmo::CK2::CK_ID. +# @return True if no error, otherwise False. +BMMesh_SetMaterialSlot = _create_bmap_func('BMMesh_SetMaterialSlot', [bm_void_p, bm_CKID, bm_CKDWORD, bm_CKID]) +## BM3dEntity_GetWorldMatrix +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_mat[out] Type: LibCmo::VxMath::VxMatrix. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BM3dEntity_GetWorldMatrix = _create_bmap_func('BM3dEntity_GetWorldMatrix', [bm_void_p, bm_CKID, bm_VxMatrix_p]) +## BM3dEntity_SetWorldMatrix +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param mat[in] Type: LibCmo::VxMath::VxMatrix. +# @return True if no error, otherwise False. +BM3dEntity_SetWorldMatrix = _create_bmap_func('BM3dEntity_SetWorldMatrix', [bm_void_p, bm_CKID, bm_VxMatrix]) +## BM3dEntity_GetCurrentMesh +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_meshid[out] Type: LibCmo::CK2::CK_ID. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BM3dEntity_GetCurrentMesh = _create_bmap_func('BM3dEntity_GetCurrentMesh', [bm_void_p, bm_CKID, bm_CKID_p]) +## BM3dEntity_SetCurrentMesh +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param meshid[in] Type: LibCmo::CK2::CK_ID. +# @return True if no error, otherwise False. +BM3dEntity_SetCurrentMesh = _create_bmap_func('BM3dEntity_SetCurrentMesh', [bm_void_p, bm_CKID, bm_CKID]) +## BM3dEntity_GetVisibility +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param out_isVisible[out] Type: bool. Use ctypes.byref(data) pass it. +# @return True if no error, otherwise False. +BM3dEntity_GetVisibility = _create_bmap_func('BM3dEntity_GetVisibility', [bm_void_p, bm_CKID, bm_bool_p]) +## BM3dEntity_SetVisibility +# @param bmfile[in] Type: BMap::BMFile*. The pointer to corresponding BMFile. +# @param objid[in] Type: LibCmo::CK2::CK_ID. The CKID of object you accessing. +# @param is_visible[in] Type: bool. +# @return True if no error, otherwise False. +BM3dEntity_SetVisibility = _create_bmap_func('BM3dEntity_SetVisibility', [bm_void_p, bm_CKID, bm_bool]) + +#endregion + diff --git a/BMapBindings/PyBMap/bmap_wrapper.py b/BMapBindings/PyBMap/bmap_wrapper.py new file mode 100644 index 0000000..0d0e612 --- /dev/null +++ b/BMapBindings/PyBMap/bmap_wrapper.py @@ -0,0 +1,110 @@ +import ctypes, typing, atexit +from . import bmap, virtools_types + +#region Basic Class Defines + +g_BMapEncoding: str = "utf-8" + +class _AbstractPointer(): + __mRawPointer: int + + def __init__(self, raw_pointer: bmap.bm_void_p): + if raw_pointer.value is None: + self.__mRawPointer = 0 + else: + self.__mRawPointer = raw_pointer.value + + def _is_valid(self) -> bool: + return self.__mRawPointer != 0 + + def _get_pointer(self) -> bmap.bm_void_p: + return bmap.bm_void_p(self.__mRawPointer) + + def __eq__(self, obj: object) -> bool: + if isinstance(obj, self.__class__): + return obj.__mRawPointer == self.__mRawPointer + else: + return False + + def __hash__(self) -> int: + return hash(self.__mRawPointer) + +class _AbstractCKObject(_AbstractPointer): + __mCKID: int + + def __init__(self, raw_pointer: bmap.bm_void_p, ckid: bmap.bm_CKID): + _AbstractPointer.__init__(self, raw_pointer) + self.__mCKID = ckid.value + + def _is_valid(self) -> bool: + return _AbstractPointer._is_valid(self) and self.__mCKID != 0 + + def _get_ckid(self) -> bmap.bm_CKID: + return bmap.bm_CKID(self.__mCKID) + + def __eq__(self, obj: object) -> bool: + if isinstance(obj, self.__class__): + return obj.__mRawPointer == self.__mRawPointer and obj.__mCKID == self.__mCKID + else: + return False + + def __hash__(self) -> int: + return hash((self.__mRawPointer, self.__mCKID)) + +#endregion + +#region Valid Check, Init and Dispose + +def is_bmap_available() -> bool: + return bmap.is_bmap_available() + +# init module self and register exit function +if is_bmap_available(): + bmap.BMInit() + + def _auto_exit(): + bmap.BMDispose() + atexit.register(_auto_exit) + +#endregion + +#region Real Type Defines + +class BMFileReader(_AbstractPointer): + pass + # write with `with` syntax + +class BMFileWriter(_AbstractPointer): + pass + # write with `with` syntax + +class BMMeshTrans(_AbstractPointer): + pass + # write with `with` syntax + +class BMObject(_AbstractCKObject): + def get_name(self) -> str: + name: bmap.bm_CKSTRING = bmap.bm_CKSTRING() + bmap.BMObject_GetName(self._get_pointer(), self._get_ckid(), ctypes.byref(name)) + return name.value.decode(g_BMapEncoding) + + def set_name(self, name: str) -> None: + name: bmap.bm_CKSTRING = bmap.bm_CKSTRING(name.encode(g_BMapEncoding)) + bmap.BMObject_SetName(self._get_pointer(), self._get_ckid(), name) + +class BMGroup(BMObject): + pass + +class BMTexture(BMObject): + pass + +class BMMaterial(BMObject): + pass + +class BMMesh(BMObject): + pass + +class BM3dObject(BMObject): + pass + +#endregion diff --git a/BMapBindings/PyBMap/virtools_types.py b/BMapBindings/PyBMap/virtools_types.py new file mode 100644 index 0000000..24e45c6 --- /dev/null +++ b/BMapBindings/PyBMap/virtools_types.py @@ -0,0 +1,194 @@ +import typing, enum + +ConstVxVector2 = tuple[float, float] +ConstVxVector3 = tuple[float, float, float] +ConstVxVector4 = tuple[float, float, float, float] + +class VxVector2(): + x: float + y: float + + def __init__(self, _x: float = 0.0, _y: float = 0.0): + self.x = _x + self.y = _y + + def from_const(self, cv: ConstVxVector2) -> None: + (self.x, self.y, ) = cv + + def to_const(self) -> ConstVxVector2: + return (self.x, self.y, ) + +class VxVector3(): + x: float + y: float + z: float + + def __init__(self, _x: float = 0.0, _y: float = 0.0, _z: float = 0.0): + self.x = _x + self.y = _y + self.z = _z + + def from_const(self, cv: ConstVxVector3) -> None: + (self.x, self.y, self.z) = cv + + def to_const(self) -> ConstVxVector3: + return (self.x, self.y, self.z) + +ConstVxColorRGBA = tuple[float, float, float, float] +ConstVxColorRGB = tuple[float, float, float] + +class VxColor(): + """ + The Color struct support RGBA. + """ + a: float + r: float + g: float + b: float + def __init__(self, _r: float, _g: float, _b: float, _a: float = 1.0): + self.r = _r + self.g = _g + self.b = _b + self.a = _a + self.regulate() + + def to_const_rgba(self) -> ConstVxColorRGBA: + return (self.r, self.g, self.b, self.a) + + def to_const_rgb(self) -> ConstVxColorRGB: + return (self.r, self.g, self.b) + + def from_const_rgba(self, val: ConstVxColorRGBA) -> None: + (self.r, self.g, self.b, self.a) = val + self.regulate() + + def from_const_rgb(self, val: ConstVxColorRGB) -> None: + (self.r, self.g, self.b) = val + self.a = 1.0 + self.regulate() + + def clone(self): + return VxColor(self.r, self.g, self.b, self.a) + + @staticmethod + def _clamp_factor(val: float) -> float: + if val > 1.0: return 1.0 + elif val < 0.0: return 0.0 + else: return val + + def regulate(self): + self.a = VxColor._clamp_factor(self.a) + self.r = VxColor._clamp_factor(self.r) + self.g = VxColor._clamp_factor(self.g) + self.b = VxColor._clamp_factor(self.b) + +class VxMatrix(): + """ + The Matrix representation. + The bracket statement exactly equal with Virtools. + """ + __mData: list[list[float]] + + def __init__(self): + # init array + self.__mData = [[0] * 4 for i in range(4)] + # set to identy + self.reset() + + def _get_raw(self) -> list[list[float]]: + return self.__mData + + def reset(self) -> None: + # reset to identy + for i in range(4): + for j in range(4): + self.__mData[i][j] = 0.0 + + self.__mData[0][0] = 1.0 + self.__mData[1][1] = 1.0 + self.__mData[2][2] = 1.0 + self.__mData[3][3] = 1.0 + +class VXTEXTURE_BLENDMODE(enum.IntEnum): + """! + Blend Mode Flags + """ + VXTEXTUREBLEND_DECAL = 1 ##< Texture replace any material information + VXTEXTUREBLEND_MODULATE = 2 ##< Texture and material are combine. Alpha information of the texture replace material alpha component. + VXTEXTUREBLEND_DECALALPHA = 3 ##< Alpha information in the texture specify how material and texture are combined. Alpha information of the texture replace material alpha component. + VXTEXTUREBLEND_MODULATEALPHA = 4 ##< Alpha information in the texture specify how material and texture are combined + VXTEXTUREBLEND_DECALMASK = 5 + VXTEXTUREBLEND_MODULATEMASK = 6 + VXTEXTUREBLEND_COPY = 7 ##< Equivalent to DECAL + VXTEXTUREBLEND_ADD = 8 + VXTEXTUREBLEND_DOTPRODUCT3 = 9 ##< Perform a Dot Product 3 between texture (normal map) and a referential vector given in VXRENDERSTATE_TEXTUREFACTOR. + VXTEXTUREBLEND_MAX = 10 + +class VXTEXTURE_FILTERMODE(enum.IntEnum): + """! + Filter Mode Options + """ + VXTEXTUREFILTER_NEAREST = 1 ##< No Filter + VXTEXTUREFILTER_LINEAR = 2 ##< Bilinear Interpolation + VXTEXTUREFILTER_MIPNEAREST = 3 ##< Mip mapping + VXTEXTUREFILTER_MIPLINEAR = 4 ##< Mip Mapping with Bilinear interpolation + VXTEXTUREFILTER_LINEARMIPNEAREST = 5 ##< Mip Mapping with Bilinear interpolation between mipmap levels. + VXTEXTUREFILTER_LINEARMIPLINEAR = 6 ##< Trilinear Filtering + VXTEXTUREFILTER_ANISOTROPIC = 7 ##< Anisotropic filtering + +class VXTEXTURE_ADDRESSMODE(enum.IntEnum): + """! + Texture addressing modes. + """ + VXTEXTURE_ADDRESSWRAP = 1 ##< Default mesh wrap mode is used (see CKMesh::SetWrapMode) + VXTEXTURE_ADDRESSMIRROR = 2 ##< Texture coordinates outside the range [0..1] are flipped evenly. + VXTEXTURE_ADDRESSCLAMP = 3 ##< Texture coordinates greater than 1.0 are set to 1.0, and values less than 0.0 are set to 0.0. + VXTEXTURE_ADDRESSBORDER = 4 ##< When texture coordinates are greater than 1.0 or less than 0.0 texture is set to a color defined in CKMaterial::SetTextureBorderColor. + VXTEXTURE_ADDRESSMIRRORONCE = 5 ##< + +class VXBLEND_MODE(enum.IntEnum): + """! + Blending Mode options + """ + VXBLEND_ZERO = 1 ##< Blend factor is (0, 0, 0, 0). + VXBLEND_ONE = 2 ##< Blend factor is (1, 1, 1, 1). + VXBLEND_SRCCOLOR = 3 ##< Blend factor is (Rs, Gs, Bs, As). + VXBLEND_INVSRCCOLOR = 4 ##< Blend factor is (1-Rs, 1-Gs, 1-Bs, 1-As). + VXBLEND_SRCALPHA = 5 ##< Blend factor is (As, As, As, As). + VXBLEND_INVSRCALPHA = 6 ##< Blend factor is (1-As, 1-As, 1-As, 1-As). + VXBLEND_DESTALPHA = 7 ##< Blend factor is (Ad, Ad, Ad, Ad). + VXBLEND_INVDESTALPHA = 8 ##< Blend factor is (1-Ad, 1-Ad, 1-Ad, 1-Ad). + VXBLEND_DESTCOLOR = 9 ##< Blend factor is (Rd, Gd, Bd, Ad). + VXBLEND_INVDESTCOLOR = 10 ##< Blend factor is (1-Rd, 1-Gd, 1-Bd, 1-Ad). + VXBLEND_SRCALPHASAT = 11 ##< Blend factor is (f, f, f, 1); f = min(As, 1-Ad). + #VXBLEND_BOTHSRCALPHA = 12 ##< Source blend factor is (As, As, As, As) and destination blend factor is (1-As, 1-As, 1-As, 1-As) + #VXBLEND_BOTHINVSRCALPHA = 13 ##< Source blend factor is (1-As, 1-As, 1-As, 1-As) and destination blend factor is (As, As, As, As) + +class VXFILL_MODE(enum.IntEnum): + """! + Fill Mode Options + """ + VXFILL_POINT = 1 ##< Vertices rendering + VXFILL_WIREFRAME = 2 ##< Edges rendering + VXFILL_SOLID = 3 ##< Face rendering + +class VXSHADE_MODE(enum.IntEnum): + """! + Shade Mode Options + """ + VXSHADE_FLAT = 1 ##< Flat Shading + VXSHADE_GOURAUD = 2 ##< Gouraud Shading + VXSHADE_PHONG = 3 ##< Phong Shading (Not yet supported by most implementation) + +class VXCMPFUNC(enum.IntEnum): + """! + Comparison Function + """ + VXCMP_NEVER = 1 ##< Always fail the test. + VXCMP_LESS = 2 ##< Accept if value if less than current value. + VXCMP_EQUAL = 3 ##< Accept if value if equal than current value. + VXCMP_LESSEQUAL = 4 ##< Accept if value if less or equal than current value. + VXCMP_GREATER = 5 ##< Accept if value if greater than current value. + VXCMP_NOTEQUAL = 6 ##< Accept if value if different than current value. + VXCMP_GREATEREQUAL = 7 ##< Accept if value if greater or equal current value. + VXCMP_ALWAYS = 8 ##< Always accept the test. diff --git a/CodeGen/BMapBindings/dest/BMExports.hpp b/CodeGen/BMapBindings/dest/BMExports.hpp deleted file mode 100644 index 910e289..0000000 --- a/CodeGen/BMapBindings/dest/BMExports.hpp +++ /dev/null @@ -1,133 +0,0 @@ -LIBCMO_EXPORT bool BMInit(); -LIBCMO_EXPORT bool BMDispose(); -LIBCMO_EXPORT bool BMFile_Load( - BMPARAM_IN(LibCmo::CKSTRING, file_name), - BMPARAM_IN(LibCmo::CKSTRING, temp_folder), - BMPARAM_IN(LibCmo::CKSTRING, texture_folder), - BMPARAM_IN(LibCmo::CKDWORD, encoding_count), - BMPARAM_IN(LibCmo::CKSTRING*, encodings), - BMPARAM_OUT(BMap::BMFile*, out_file) -); -LIBCMO_EXPORT bool BMFile_Create( - BMPARAM_IN(LibCmo::CKSTRING, temp_folder), - BMPARAM_IN(LibCmo::CKSTRING, texture_folder), - BMPARAM_IN(LibCmo::CKDWORD, encoding_count), - BMPARAM_IN(LibCmo::CKSTRING*, encodings), - BMPARAM_OUT(BMap::BMFile*, out_file) -); -LIBCMO_EXPORT bool BMFile_Save( - BMPARAM_IN(BMap::BMFile*, map_file), - BMPARAM_IN(LibCmo::CKSTRING, file_name), - BMPARAM_IN(LibCmo::CKINT, compreess_level) -); -LIBCMO_EXPORT bool BMFile_Free( - BMPARAM_IN(BMap::BMFile*, map_file) -); -LIBCMO_EXPORT bool BMFile_GetGroupCount(BMPARAM_FILE_DECL(bmfile), BMPARAM_OUT(LibCmo::CKDWORD, out_count)); -LIBCMO_EXPORT bool BMFile_GetGroup(BMPARAM_FILE_DECL(bmfile), BMPARAM_IN(LibCmo::CKDWORD, idx), BMPARAM_OUT(LibCmo::CK2::CK_ID, out_id)); -LIBCMO_EXPORT bool BMFile_CreateGroup(BMPARAM_FILE_DECL(bmfile), BMPARAM_OUT(LibCmo::CK2::CK_ID, out_id)); -LIBCMO_EXPORT bool BMFile_Get3dObjectCount(BMPARAM_FILE_DECL(bmfile), BMPARAM_OUT(LibCmo::CKDWORD, out_count)); -LIBCMO_EXPORT bool BMFile_Get3dObject(BMPARAM_FILE_DECL(bmfile), BMPARAM_IN(LibCmo::CKDWORD, idx), BMPARAM_OUT(LibCmo::CK2::CK_ID, out_id)); -LIBCMO_EXPORT bool BMFile_Create3dObject(BMPARAM_FILE_DECL(bmfile), BMPARAM_OUT(LibCmo::CK2::CK_ID, out_id)); -LIBCMO_EXPORT bool BMFile_GetMeshCount(BMPARAM_FILE_DECL(bmfile), BMPARAM_OUT(LibCmo::CKDWORD, out_count)); -LIBCMO_EXPORT bool BMFile_GetMesh(BMPARAM_FILE_DECL(bmfile), BMPARAM_IN(LibCmo::CKDWORD, idx), BMPARAM_OUT(LibCmo::CK2::CK_ID, out_id)); -LIBCMO_EXPORT bool BMFile_CreateMesh(BMPARAM_FILE_DECL(bmfile), BMPARAM_OUT(LibCmo::CK2::CK_ID, out_id)); -LIBCMO_EXPORT bool BMFile_GetMaterialCount(BMPARAM_FILE_DECL(bmfile), BMPARAM_OUT(LibCmo::CKDWORD, out_count)); -LIBCMO_EXPORT bool BMFile_GetMaterial(BMPARAM_FILE_DECL(bmfile), BMPARAM_IN(LibCmo::CKDWORD, idx), BMPARAM_OUT(LibCmo::CK2::CK_ID, out_id)); -LIBCMO_EXPORT bool BMFile_CreateMaterial(BMPARAM_FILE_DECL(bmfile), BMPARAM_OUT(LibCmo::CK2::CK_ID, out_id)); -LIBCMO_EXPORT bool BMFile_GetTextureCount(BMPARAM_FILE_DECL(bmfile), BMPARAM_OUT(LibCmo::CKDWORD, out_count)); -LIBCMO_EXPORT bool BMFile_GetTexture(BMPARAM_FILE_DECL(bmfile), BMPARAM_IN(LibCmo::CKDWORD, idx), BMPARAM_OUT(LibCmo::CK2::CK_ID, out_id)); -LIBCMO_EXPORT bool BMFile_CreateTexture(BMPARAM_FILE_DECL(bmfile), BMPARAM_OUT(LibCmo::CK2::CK_ID, out_id)); -LIBCMO_EXPORT bool BMMeshTrans_New(BMPARAM_OUT(BMap::BMMeshTransition*, out_trans)); -LIBCMO_EXPORT bool BMMeshTrans_Delete(BMPARAM_IN(BMap::BMMeshTransition*, trans)); -LIBCMO_EXPORT bool BMMeshTrans_PrepareVertexCount(BMPARAM_MESHTRANS_DECL(trans), BMPARAM_IN(LibCmo::CKDWORD, count)); -LIBCMO_EXPORT bool BMMeshTrans_PrepareVertex(BMPARAM_MESHTRANS_DECL(trans), BMPARAM_OUT(LibCmo::VxMath::VxVector3*, out_mem)); -LIBCMO_EXPORT bool BMMeshTrans_PrepareNormalCount(BMPARAM_MESHTRANS_DECL(trans), BMPARAM_IN(LibCmo::CKDWORD, count)); -LIBCMO_EXPORT bool BMMeshTrans_PrepareNormal(BMPARAM_MESHTRANS_DECL(trans), BMPARAM_OUT(LibCmo::VxMath::VxVector3*, out_mem)); -LIBCMO_EXPORT bool BMMeshTrans_PrepareUVCount(BMPARAM_MESHTRANS_DECL(trans), BMPARAM_IN(LibCmo::CKDWORD, count)); -LIBCMO_EXPORT bool BMMeshTrans_PrepareUV(BMPARAM_MESHTRANS_DECL(trans), BMPARAM_OUT(LibCmo::VxMath::VxVector2*, out_mem)); -LIBCMO_EXPORT bool BMMeshTrans_PrepareMtlSlotCount(BMPARAM_MESHTRANS_DECL(trans), BMPARAM_IN(LibCmo::CKDWORD, count)); -LIBCMO_EXPORT bool BMMeshTrans_PrepareMtlSlot(BMPARAM_MESHTRANS_DECL(trans), BMPARAM_OUT(LibCmo::CK2::CK_ID*, out_mem)); -LIBCMO_EXPORT bool BMMeshTrans_PrepareFaceCount(BMPARAM_MESHTRANS_DECL(trans), BMPARAM_IN(LibCmo::CKDWORD, count)); -LIBCMO_EXPORT bool BMMeshTrans_PrepareFaceVertexIndices(BMPARAM_MESHTRANS_DECL(trans), BMPARAM_OUT(LibCmo::CKDWORD*, out_mem)); -LIBCMO_EXPORT bool BMMeshTrans_PrepareFaceNormalIndices(BMPARAM_MESHTRANS_DECL(trans), BMPARAM_OUT(LibCmo::CKDWORD*, out_mem)); -LIBCMO_EXPORT bool BMMeshTrans_PrepareFaceUVIndices(BMPARAM_MESHTRANS_DECL(trans), BMPARAM_OUT(LibCmo::CKDWORD*, out_mem)); -LIBCMO_EXPORT bool BMMeshTrans_PrepareFaceMtlSlot(BMPARAM_MESHTRANS_DECL(trans), BMPARAM_OUT(LibCmo::CKDWORD*, out_mem)); -LIBCMO_EXPORT bool BMMeshTrans_Parse(BMPARAM_MESHTRANS_DECL(trans), BMPARAM_IN(BMap::BMFile*, bmfile), BMPARAM_IN(LibCmo::CK2::CK_ID, objid)); -LIBCMO_EXPORT bool BMObject_GetName(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKSTRING, out_name)); -LIBCMO_EXPORT bool BMObject_SetName(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKSTRING, name)); -LIBCMO_EXPORT bool BMGroup_AddObject(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CK2::CK_ID, memberid)); -LIBCMO_EXPORT bool BMGroup_GetObjectCount(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKDWORD, out_count)); -LIBCMO_EXPORT bool BMGroup_GetObject(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKDWORD, pos), BMPARAM_OUT(LibCmo::CK2::CK_ID, out_objid)); -LIBCMO_EXPORT bool BMTexture_GetFileName(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKSTRING, out_filename)); -LIBCMO_EXPORT bool BMTexture_LoadImage(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKSTRING, filename)); -LIBCMO_EXPORT bool BMTexture_SaveImage(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKSTRING, filename)); -LIBCMO_EXPORT bool BMTexture_GetSaveOptions(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CK2::CK_TEXTURE_SAVEOPTIONS, out_saveopt)); -LIBCMO_EXPORT bool BMTexture_SetSaveOptions(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CK2::CK_TEXTURE_SAVEOPTIONS, saveopt)); -LIBCMO_EXPORT bool BMTexture_GetVideoFormat(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::VxMath::VX_PIXELFORMAT, out_vfmt)); -LIBCMO_EXPORT bool BMTexture_SetVideoFormat(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::VxMath::VX_PIXELFORMAT, vfmt)); -LIBCMO_EXPORT bool BMMaterial_GetDiffuse(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::VxMath::VxColor, out_val)); -LIBCMO_EXPORT bool BMMaterial_SetDiffuse(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::VxMath::VxColor, col)); -LIBCMO_EXPORT bool BMMaterial_GetAmbient(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::VxMath::VxColor, out_val)); -LIBCMO_EXPORT bool BMMaterial_SetAmbient(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::VxMath::VxColor, col)); -LIBCMO_EXPORT bool BMMaterial_GetSpecular(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::VxMath::VxColor, out_val)); -LIBCMO_EXPORT bool BMMaterial_SetSpecular(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::VxMath::VxColor, col)); -LIBCMO_EXPORT bool BMMaterial_GetEmissive(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::VxMath::VxColor, out_val)); -LIBCMO_EXPORT bool BMMaterial_SetEmissive(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::VxMath::VxColor, col)); -LIBCMO_EXPORT bool BMMaterial_GetSpecularPower(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKFLOAT, out_val)); -LIBCMO_EXPORT bool BMMaterial_SetSpecularPower(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKFLOAT, val)); -LIBCMO_EXPORT bool BMMaterial_GetTexture(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CK2::CK_ID, out_texid)); -LIBCMO_EXPORT bool BMMaterial_SetTexture(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CK2::CK_ID, texid)); -LIBCMO_EXPORT bool BMMaterial_GetTextureBorderColor(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKDWORD, out_val)); -LIBCMO_EXPORT bool BMMaterial_SetTextureBorderColor(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKDWORD, val)); -LIBCMO_EXPORT bool BMMaterial_GetTextureBlendMode(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::VxMath::VXTEXTURE_BLENDMODE, out_val)); -LIBCMO_EXPORT bool BMMaterial_SetTextureBlendMode(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::VxMath::VXTEXTURE_BLENDMODE, val)); -LIBCMO_EXPORT bool BMMaterial_GetTextureMinMode(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::VxMath::VXTEXTURE_FILTERMODE, out_val)); -LIBCMO_EXPORT bool BMMaterial_SetTextureMinMode(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::VxMath::VXTEXTURE_FILTERMODE, val)); -LIBCMO_EXPORT bool BMMaterial_GetTextureMagMode(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::VxMath::VXTEXTURE_FILTERMODE, out_val)); -LIBCMO_EXPORT bool BMMaterial_SetTextureMagMode(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::VxMath::VXTEXTURE_FILTERMODE, val)); -LIBCMO_EXPORT bool BMMaterial_GetTextureAddressMode(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::VxMath::VXTEXTURE_ADDRESSMODE, out_val)); -LIBCMO_EXPORT bool BMMaterial_SetTextureAddressMode(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::VxMath::VXTEXTURE_ADDRESSMODE, val)); -LIBCMO_EXPORT bool BMMaterial_GetSourceBlend(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::VxMath::VXBLEND_MODE, out_val)); -LIBCMO_EXPORT bool BMMaterial_SetSourceBlend(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::VxMath::VXBLEND_MODE, val)); -LIBCMO_EXPORT bool BMMaterial_GetDestBlend(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::VxMath::VXBLEND_MODE, out_val)); -LIBCMO_EXPORT bool BMMaterial_SetDestBlend(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::VxMath::VXBLEND_MODE, val)); -LIBCMO_EXPORT bool BMMaterial_GetFillMode(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::VxMath::VXFILL_MODE, out_val)); -LIBCMO_EXPORT bool BMMaterial_SetFillMode(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::VxMath::VXFILL_MODE, val)); -LIBCMO_EXPORT bool BMMaterial_GetShadeMode(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::VxMath::VXSHADE_MODE, out_val)); -LIBCMO_EXPORT bool BMMaterial_SetShadeMode(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::VxMath::VXSHADE_MODE, val)); -LIBCMO_EXPORT bool BMMaterial_GetAlphaTestEnabled(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(bool, out_val)); -LIBCMO_EXPORT bool BMMaterial_SetAlphaTestEnabled(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(bool, enabled)); -LIBCMO_EXPORT bool BMMaterial_GetAlphaBlendEnabled(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(bool, out_val)); -LIBCMO_EXPORT bool BMMaterial_SetAlphaBlendEnabled(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(bool, enabled)); -LIBCMO_EXPORT bool BMMaterial_GetPerspectiveCorrectionEnabled(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(bool, out_val)); -LIBCMO_EXPORT bool BMMaterial_SetPerspectiveCorrectionEnabled(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(bool, enabled)); -LIBCMO_EXPORT bool BMMaterial_GetZWriteEnabled(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(bool, out_val)); -LIBCMO_EXPORT bool BMMaterial_SetZWriteEnabled(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(bool, enabled)); -LIBCMO_EXPORT bool BMMaterial_GetTwoSidedEnabled(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(bool, out_val)); -LIBCMO_EXPORT bool BMMaterial_SetTwoSidedEnabled(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(bool, enabled)); -LIBCMO_EXPORT bool BMMaterial_GetAlphaRef(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKBYTE, out_val)); -LIBCMO_EXPORT bool BMMaterial_SetAlphaRef(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKBYTE, val)); -LIBCMO_EXPORT bool BMMaterial_GetAlphaFunc(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::VxMath::VXCMPFUNC, out_val)); -LIBCMO_EXPORT bool BMMaterial_SetAlphaFunc(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::VxMath::VXCMPFUNC, val)); -LIBCMO_EXPORT bool BMMaterial_GetZFunc(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::VxMath::VXCMPFUNC, out_val)); -LIBCMO_EXPORT bool BMMaterial_SetZFunc(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::VxMath::VXCMPFUNC, val)); -LIBCMO_EXPORT bool BMMesh_GetVertexCount(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKDWORD, out_count)); -LIBCMO_EXPORT bool BMMesh_SetVertexCount(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKDWORD, count)); -LIBCMO_EXPORT bool BMMesh_GetVertexPositions(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::VxMath::VxVector3*, out_mem)); -LIBCMO_EXPORT bool BMMesh_GetVertexNormals(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::VxMath::VxVector3*, out_mem)); -LIBCMO_EXPORT bool BMMesh_GetVertexUVs(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::VxMath::VxVector2*, out_mem)); -LIBCMO_EXPORT bool BMMesh_GetFaceCount(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKDWORD, out_count)); -LIBCMO_EXPORT bool BMMesh_SetFaceCount(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKDWORD, count)); -LIBCMO_EXPORT bool BMMesh_GetFaceIndices(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKWORD*, out_mem)); -LIBCMO_EXPORT bool BMMesh_GetFaceMaterialSlotIndexs(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKWORD*, out_mem)); -LIBCMO_EXPORT bool BMMesh_GetMaterialSlotCount(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CKDWORD, out_count)); -LIBCMO_EXPORT bool BMMesh_SetMaterialSlotCount(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKDWORD, count)); -LIBCMO_EXPORT bool BMMesh_GetMaterialSlot(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKDWORD, index), BMPARAM_OUT(LibCmo::CK2::CK_ID, out_mtlid)); -LIBCMO_EXPORT bool BMMesh_SetMaterialSlot(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CKDWORD, index), BMPARAM_IN(LibCmo::CK2::CK_ID, mtlid)); -LIBCMO_EXPORT bool BM3dEntity_GetWorldMatrix(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::VxMath::VxMatrix, out_mat)); -LIBCMO_EXPORT bool BM3dEntity_SetWorldMatrix(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::VxMath::VxMatrix, mat)); -LIBCMO_EXPORT bool BM3dEntity_GetCurrentMesh(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(LibCmo::CK2::CK_ID, out_meshid)); -LIBCMO_EXPORT bool BM3dEntity_SetCurrentMesh(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(LibCmo::CK2::CK_ID, meshid)); -LIBCMO_EXPORT bool BM3dEntity_GetVisibility(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_OUT(bool, out_isVisible)); -LIBCMO_EXPORT bool BM3dEntity_SetVisibility(BMPARAM_OBJECT_DECL(bmfile, objid), BMPARAM_IN(bool, is_visible)); diff --git a/CodeGen/BMapBindings/snippets/header.py b/CodeGen/BMapBindings/snippets/header.py index fb5196f..fac1e94 100644 --- a/CodeGen/BMapBindings/snippets/header.py +++ b/CodeGen/BMapBindings/snippets/header.py @@ -2,6 +2,12 @@ import ctypes, os #region Type Defines +class BMapException(Exception): + """ + The exception thrown by BMap bindings. + """ + pass + bm_CKSTRING = ctypes.c_char_p bm_CKSTRING_p = ctypes.POINTER(bm_CKSTRING) bm_CKDWORD = ctypes.c_uint32 @@ -69,12 +75,18 @@ except: def is_bmap_available() -> bool: return _g_BMapModule is not None -def _create_bmap_func(fct_name: str, fct_params: list[ctypes._CData]) -> ctypes._FuncPointer: +def _bmap_error_check(result: bm_bool, func, args): + if not bm_bool.value: + raise BMapException("BMap operation failed.") + return result + +def _create_bmap_func(fct_name: str, fct_params: list[ctypes._SimpleCData]) -> ctypes._CFuncPtr: if _g_BMapModule is None: return None - cache: ctypes._FuncPointer = getattr(_g_BMapModule, fct_name) + cache: ctypes._CFuncPtr = getattr(_g_BMapModule, fct_name) cache.argtypes = fct_params cache.restype = bm_bool + cache.errcheck = _bmap_error_check return cache #endregion