// Shave and a Haircut // (c) 2019 Epic Games // US Patent 6720962 #include #include #include #include "shaveAPI.h" #include "shaveAPIimpl.h" #include #ifdef _WIN32 BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } #endif MStatus shaveAPI::exportAllHair( shaveAPI::HairInfo* hairInfo, bool renderableOnly ) { return shaveAPIimpl::exportAllHair(hairInfo, renderableOnly); } #if 0 MStatus shaveAPI::exportDRAFile(MString filename) { return shaveAPIimpl::exportDRAFile(filename); } #endif MStatus shaveAPI::exportHair( MObjectArray& shaveNodes, shaveAPI::HairInfo* hairInfo ) { MStatus stat = shaveAPIimpl::exportHair(shaveNodes, hairInfo); #ifdef _WIN32 assert(_CrtCheckMemory()); #endif return stat; } MStatus shaveAPI::exportOcclusions( shaveAPI::SceneGeom* hairOcclusions, shaveAPI::SceneGeom* shadowOcclusions ) { return shaveAPIimpl::exportOcclusions(hairOcclusions, shadowOcclusions); } void shaveAPI::freeHairInfo(shaveAPI::HairInfo* hairInfo) { hairInfo->clear(); } void shaveAPI::initHairInfo(shaveAPI::HairInfo* hairInfo) { } //****************************************** // // HairInfo Interfaces // //****************************************** shaveAPI::HairInfo::HairInfo() { shaveAPIimpl::initHairInfo(this); } shaveAPI::HairInfo::~HairInfo() { clear(); } void shaveAPI::HairInfo::clear() { shaveAPIimpl::freeHairInfo(this); } //****************************************** // // SceneGeom Interfaces // //****************************************** shaveAPI::SceneGeom::SceneGeom() { shaveAPIimpl::initSceneGeom(this); } shaveAPI::SceneGeom::~SceneGeom() { clear(); } void shaveAPI::SceneGeom::clear() { shaveAPIimpl::freeSceneGeom(this); }