extensions/sdktools/trnatives.cpp
changeset 1855 7871fb255eb5
parent 1330 ab94316bb52b
child 1859 76e8977e1193
     1.1 --- a/extensions/sdktools/trnatives.cpp	Tue Jan 22 17:04:59 2008 +0000
     1.2 +++ b/extensions/sdktools/trnatives.cpp	Tue Jan 22 17:18:15 2008 +0000
     1.3 @@ -41,16 +41,19 @@
     1.4  		edict_t *pEdict = gameents->BaseEntityToEdict(reinterpret_cast<CBaseEntity *>(pEntity));
     1.5  		m_pFunc->PushCell(engine->IndexOfEdict(pEdict));
     1.6  		m_pFunc->PushCell(contentsMask);
     1.7 +		m_pFunc->PushCell(m_Data);
     1.8  		m_pFunc->Execute(&res);
     1.9  
    1.10  		return (res) ? true : false;
    1.11  	}
    1.12 -	void SetFunctionPtr(IPluginFunction *pFunc)
    1.13 +	void SetFunctionPtr(IPluginFunction *pFunc, cell_t data)
    1.14  	{
    1.15  		m_pFunc = pFunc;
    1.16 +		m_Data = data;
    1.17  	}
    1.18  private:
    1.19  	IPluginFunction *m_pFunc;
    1.20 +	cell_t m_Data;
    1.21  };
    1.22  
    1.23  /* Used for the global trace version */
    1.24 @@ -105,13 +108,24 @@
    1.25  {
    1.26  	cell_t *startaddr, *endaddr;
    1.27  	IPluginFunction *pFunc;
    1.28 +	cell_t data;
    1.29  
    1.30  	pFunc = pContext->GetFunctionById(params[5]);
    1.31  	if (!pFunc)
    1.32  	{
    1.33  		return pContext->ThrowNativeError("Invalid function id (%X)", params[5]);
    1.34  	}
    1.35 -	g_SMTraceFilter.SetFunctionPtr(pFunc);
    1.36 +
    1.37 +	if (params[0] >= 6)
    1.38 +	{
    1.39 +		data = params[6];
    1.40 +	}
    1.41 +	else
    1.42 +	{
    1.43 +		data = 0;
    1.44 +	}
    1.45 +
    1.46 +	g_SMTraceFilter.SetFunctionPtr(pFunc, data);
    1.47  	pContext->LocalToPhysAddr(params[1], &startaddr);
    1.48  	pContext->LocalToPhysAddr(params[2], &endaddr);
    1.49  
    1.50 @@ -192,6 +206,7 @@
    1.51  {
    1.52  	IPluginFunction *pFunc;
    1.53  	cell_t *startaddr, *endaddr;
    1.54 +	cell_t data;
    1.55  
    1.56  	pFunc = pContext->GetFunctionById(params[5]);
    1.57  	if (!pFunc)
    1.58 @@ -205,7 +220,16 @@
    1.59  	CSMTraceFilter smfilter;
    1.60  	Ray_t ray;
    1.61  
    1.62 -	smfilter.SetFunctionPtr(pFunc);
    1.63 +	if (params[0] >= 6)
    1.64 +	{
    1.65 +		data = params[6];
    1.66 +	}
    1.67 +	else
    1.68 +	{
    1.69 +		data = 0;
    1.70 +	}
    1.71 +
    1.72 +	smfilter.SetFunctionPtr(pFunc, data);
    1.73  	StartVec.Init(sp_ctof(startaddr[0]), sp_ctof(startaddr[1]), sp_ctof(startaddr[2]));
    1.74  
    1.75  	switch (params[4])