void VMFImport() { Application app; CStatus st; Property prop; prop = app.GetActiveSceneRoot().GetProperties().GetItem( L"VMFImportProperty" ); if (!prop.IsValid()) prop = app.GetActiveSceneRoot().AddProperty( L"VMFImportProperty" ) ; CValueArray args(5); args[0] = prop; args[1] = L""; args[2] = L"VMFImportProperty"; args[3] = (long)4; args[4] = true; CValue ret; st = app.ExecuteCommand(L"InspectObj",args,ret); if ( CStatus::OK == st ) { // // FileName // char l_szFilename[MAX_PATH]; memset ( l_szFilename,0,MAX_PATH ); Parameter parm = prop.GetParameters().GetItem(L"Filename" ); CString str = parm.GetValue(); const wchar_t * p = str.GetWideString(); wcstombs( l_szFilename, p, wcslen (p)); parm = prop.GetParameters().GetItem(L"TexturePath" ); str = parm.GetValue(); p = str.GetWideString(); wcstombs( ___gTexturePathOverride, p, wcslen (p)); // // Bools // parm = prop.GetParameters().GetItem(L"UseMaterials"); g_iImportMaterials = (bool) parm.GetValue(); if (l_szFilename && strlen( l_szFilename ) > 0) { CMapParser p; p.Read ( l_szFilename ); p.ConvertToSemanticLayer(); } else { XSILogMessage ( L"Error - Invalid file specified", XSI::siErrorMsg ); } } }
XSI::CStatus CAxisInterpOp::Init(UpdateContext& ctx, long ) { // clean up if ( m_aWeights ) delete []m_aWeights; if ( m_aTriggerTol ) delete []m_aTriggerTol; if ( m_aTriggerOri ) delete []m_aTriggerOri; if ( m_aTargetOri ) delete []m_aTargetOri; if ( m_aTargetPos ) delete []m_aTargetPos; m_cTriggers = 0; static const wchar_t* wcsTriggerTag = L"<trigger> "; wchar_t* startpos = (wchar_t*)m_csTriggers.GetWideString(); if ( !startpos ) // no triggers defined return( CStatus::Fail ); wchar_t* endpos = startpos + m_csTriggers.Length(); // allocate memory unsigned long cBuffSize(10); m_aWeights = new double[cBuffSize]; ::memset( m_aWeights, 0, sizeof(double)*cBuffSize ); m_aTriggerTol = new double[cBuffSize]; ::memset( m_aTriggerTol, 0, sizeof(double)*cBuffSize ); m_aTriggerOri = new double[cBuffSize*3]; ::memset( m_aTriggerOri, 0, sizeof(double)*cBuffSize*3 ); m_aTargetOri = new double[cBuffSize*3]; ::memset( m_aTargetOri, 0, sizeof(double)*cBuffSize*3 ); m_aTargetPos = new double[cBuffSize*3]; ::memset( m_aTargetPos, 0, sizeof(double)*cBuffSize*3 ); // ParseHelperEntry wchar_t* nexttrigger = ::wcsstr( startpos, wcsTriggerTag); while ( nexttrigger < endpos && nexttrigger != 0 && m_cTriggers<cBuffSize ) { ::swscanf( nexttrigger, L"<trigger> %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf", &m_aTriggerTol[m_cTriggers], &m_aTriggerOri[(m_cTriggers*3)+0], &m_aTriggerOri[(m_cTriggers*3)+1], &m_aTriggerOri[(m_cTriggers*3)+2], &m_aTargetOri[(m_cTriggers*3)+0], &m_aTargetOri[(m_cTriggers*3)+1], &m_aTargetOri[(m_cTriggers*3)+2], &m_aTargetPos[(m_cTriggers*3)+0], &m_aTargetPos[(m_cTriggers*3)+1], &m_aTargetPos[(m_cTriggers*3)+2] ); m_cTriggers++; nexttrigger = ::wcsstr( nexttrigger+1, wcsTriggerTag); }; return CStatus::OK; }