int CMaxAnimationExport::DoExport(const TCHAR *name, ExpInterface *ei, Interface *i, BOOL suppressPrompts, DWORD options) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); // create an export interface for 3d studio max CMaxInterface maxInterface; if(!maxInterface.Create(ei, i)) { AfxMessageBox(theExporter.GetLastError().c_str(), MB_OK | MB_ICONEXCLAMATION); return 0; } // create an exporter instance if(!theExporter.Create(&maxInterface)) { AfxMessageBox(theExporter.GetLastError().c_str(), MB_OK | MB_ICONEXCLAMATION); return 0; } // export the animation if(!theExporter.ExportAnimation(name)) { AfxMessageBox(theExporter.GetLastError().c_str(), MB_OK | MB_ICONEXCLAMATION); return 0; } return 1; }
bool CMaxAnimationExport::ExportAnimationFromMaxscriptCall(const TCHAR *name, AnimExportParams* _animexportparams) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); // create an export interface for 3d studio max CMaxInterface maxInterface; if(!maxInterface.Create(NULL, GetCOREInterface())) { AfxMessageBox(theExporter.GetLastError().c_str(), MB_OK | MB_ICONEXCLAMATION); return 0; } // create an exporter instance if(!theExporter.Create(&maxInterface)) { AfxMessageBox(theExporter.GetLastError().c_str(), MB_OK | MB_ICONEXCLAMATION); return 0; } // export the animation if(! maxInterface.ExportAnimationFromMaxscriptCall(name, (void*)_animexportparams)) { AfxMessageBox(theExporter.GetLastError().c_str(), MB_OK | MB_ICONEXCLAMATION); return 0; } return 1; }
int CMaxSkeletonExport::ExportSkeletonFromMaxscriptCall(const TCHAR *name, INodeTab& _tabnode, bool bShowUI) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); // create an export interface for 3d studio max and set automatically the bones to export from Maxscript CMaxInterface maxInterface; if(!maxInterface.Create(NULL, GetCOREInterface(),_tabnode)) { AfxMessageBox(theExporter.GetLastError().c_str(), MB_OK | MB_ICONEXCLAMATION); return 0; } // create an exporter instance if(!theExporter.Create(&maxInterface)) { AfxMessageBox(theExporter.GetLastError().c_str(), MB_OK | MB_ICONEXCLAMATION); return 0; } // export the skeleton if(!theExporter.ExportSkeletonFromMaxscriptCall(name, bShowUI)) { AfxMessageBox(theExporter.GetLastError().c_str(), MB_OK | MB_ICONEXCLAMATION); return 0; } return 1; }
//----------------------------------------------------------------------------// bool CMaterialLibraryCandidate::CreateFromInterfaceFromMaxscriptCall() { // clear current content Clear(); // get the number of materials of the mesh CMaxInterface* imax = static_cast<CMaxInterface*>(theExporter.GetInterface()); // allocate a new material candidate CMaterialCandidate *pMaterialCandidate; pMaterialCandidate = new CMaterialCandidate(); if(pMaterialCandidate == 0) { theExporter.SetLastError("Memory allocation failed!", __FILE__, __LINE__); return false; } // create the new material candidate if(!pMaterialCandidate->Create(imax->GetBaseMatFromMaxscript())) return false; // add material candidate to the material candidate vector m_vectorMaterialCandidate.push_back(pMaterialCandidate); //Select it SetSelectedMaterialCandidate(pMaterialCandidate); return true; }
//----------------------------------------------------------------------------// // Create a skeleton candidate instance from the exporter interface // //----------------------------------------------------------------------------// bool CSkeletonCandidate::CreateFromInterfaceFromMaxScriptCall() { int nodeId; // clear current content Clear(); CMaxInterface* imax = static_cast<CMaxInterface*>(theExporter.GetInterface()); // loop through all nodes in memorized array (that has been passed by Maxscript) const int NumNodes = imax->GetNumNodesInTabNodeFromMaxscript(); for(nodeId = 0; nodeId < NumNodes; nodeId++) { CBaseNode* basenode = imax->GetNodeFromMaxscriptArray(nodeId); if (!basenode) return false; // recursively add the node to the skeleton candidate if(!AddNode(basenode, -1)) return false; } return true; }