#include "lib_sds.h" ////////////////////////////////////////////////////////////////////////// SDSObjectLib *lib_sds = nullptr; static SDSObjectLib *CheckSDSObjectLib(Int32 offset) { return (SDSObjectLib*)CheckLib(LIBRARY_SDS,offset,(C4DLibrary**)&lib_sds); } #define SDSObjectLibCall(b) SDSObjectLib *lib = CheckSDSObjectLib(LIBOFFSET(SDSObjectLib, b)); \ if (!lib || !lib->b) return; \ (lib->b) #define SDSObjectLibCallR(a,b) SDSObjectLib *lib = CheckSDSObjectLib(LIBOFFSET(SDSObjectLib, b)); \ if (!lib || !lib->b) return a; \ return (lib->b) ////////////////////////////////////////////////////////////////////////// Int32 SDSObject::GetDivision(BaseObject *op) { SDSObjectLibCallR(NOTOK,GetDivision)(this,op); } PolygonObject *SDSObject::GetSDSMesh(BaseObject *op) { SDSObjectLibCallR(nullptr,GetSDSMesh)(this,op); } Bool SDSObject::TransformPoint(BaseObject *op, Int32 ply, Float &s, Float &t, Vector *p) { SDSObjectLibCallR(false,TransformPoint)(this,op,ply,s,t,p); } Bool SDSObject::GetNormal(BaseObject *op, Int32 ply, Vector *p, Vector *n) { SDSObjectLibCallR(false,GetNormal)(this,op,ply,p,n); } Float32 *SDSObject::GetPointWeights(BaseTag *pTag) { SDSObjectLibCallR(nullptr,GetPointWeights)(pTag); } PolyWeight *SDSObject::GetEdgeWeights(BaseTag *pTag) { SDSObjectLibCallR(nullptr,GetEdgeWeights)(pTag); } SDSSubdivisionMask* SDSObject::GetSubdivisionMask(BaseObject *op, Int32 &maskcnt, Int32 *&polymap, Bool &ngonsubdiv) { SDSObjectLibCallR(nullptr,GetSubdivisionMask)(this,op,maskcnt,polymap, ngonsubdiv); } void *SDSObject::GetCreationData(BaseObject *op) { SDSObjectLibCallR(nullptr,GetCreationData)(this,op); }