#include "customgui_matassign.h" #include "c4d_string.h" #include "c4d_gui.h" static CustomGuiMatAssignLib *lib_matassign = nullptr; static CustomGuiMatAssignLib *CheckLib(Int32 offset) { return (CustomGuiMatAssignLib*)CheckLib(CUSTOMGUI_MATASSIGN, offset, (C4DLibrary**)&lib_matassign); } #define InExcludeCall(b) CustomGuiMatAssignLib *lib = CheckLib(LIBOFFSET(CustomGuiMatAssignLib, b)); \ if (!lib || !lib->b) return; \ (((iMatAssignData*)this)->*lib->b) #define InExcludeCallR(a,b) CustomGuiMatAssignLib *lib = CheckLib(LIBOFFSET(CustomGuiMatAssignLib, b)); \ if (!lib || !lib->b) return a; \ return (((iMatAssignData*)this)->*lib->b) #define InExcludeGuiCall(b) CustomGuiMatAssignLib *lib = CheckLib(LIBOFFSET(CustomGuiMatAssignLib, b)); \ if (!lib || !lib->b) return; \ (((iMatAssignCustomGui*)this)->*lib->b) #define InExcludeGuiCallR(a,b) CustomGuiMatAssignLib *lib = CheckLib(LIBOFFSET(CustomGuiMatAssignLib, b)); \ if (!lib || !lib->b) return a; \ return (((iMatAssignCustomGui*)this)->*lib->b) #define IncludeTableCallR(a,b) CustomGuiMatAssignLib *lib = CheckLib(LIBOFFSET(CustomGuiMatAssignLib, b)); \ if (!lib || !lib->b) return a; \ return (((iMatAssignTable*)this)->*lib->b) Bool MatAssignData::InsertObject(BaseList2D* pObject, Int32 lFlags) { InExcludeCallR(false, InsertObject)(pObject, lFlags); } Int32 MatAssignData::GetObjectIndex(BaseDocument *doc, BaseList2D* pObject) { InExcludeCallR(-1, GetObjectIndex)(doc,pObject); } Bool MatAssignData::DeleteObject(Int32 lIndex) { InExcludeCallR(false, DeleteObject)(lIndex); } Int32 MatAssignData::GetObjectCount() { InExcludeCallR(0, GetObjectCount)(); } BaseList2D* MatAssignData::ObjectFromIndex(BaseDocument *doc, Int32 lIndex) { InExcludeCallR(nullptr, ObjectFromIndex)(doc,lIndex); } void MatAssignData::SetMaterial(const AtomArray &materials) { InExcludeCall(SetMaterial)(materials); } Bool MatAssignData::GetMaterial(BaseDocument *doc,AtomArray &materials) { InExcludeCallR(false, GetMaterial)(doc,materials); } Bool MatAssignTable::Check(BaseList2D *op) { IncludeTableCallR(false, Check)(op); } Int32 MatAssignTable::GetObjectCount() { IncludeTableCallR(false, GetObjectCountT)(); } BaseList2D* MatAssignTable::GetObject(Int32 lIndex) { IncludeTableCallR(nullptr, GetObject)(lIndex); } void FreeInclusionTable(MatAssignTable *&pTable) { if (!pTable) return; CustomGuiMatAssignLib *lib = CheckLib(LIBOFFSET(CustomGuiMatAssignLib, LIB_FreeInclusionTable)); if (!lib || !lib->LIB_FreeInclusionTable) return; MatAssignTable* t = pTable; (lib->LIB_FreeInclusionTable)((iMatAssignTable*)t); pTable = nullptr; }