Ejemplo n.º 1
0
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 );

		}

	}
}
Ejemplo n.º 2
0
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;
}