added amb1403 - CBaseTrace.plane from pRED
--HG-- extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401865
This commit is contained in:
parent
e553996281
commit
4ade0dbdc2
@ -283,6 +283,31 @@ static cell_t smn_TRGetFraction(IPluginContext *pContext, const cell_t *params)
|
|||||||
return sp_ftoc(tr->fraction);
|
return sp_ftoc(tr->fraction);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static cell_t smn_TRGetPlaneNormal(IPluginContext *pContext, const cell_t *params)
|
||||||
|
{
|
||||||
|
trace_t *tr;
|
||||||
|
HandleError err;
|
||||||
|
HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
|
||||||
|
|
||||||
|
if (params[1] == BAD_HANDLE)
|
||||||
|
{
|
||||||
|
tr = &g_Trace;
|
||||||
|
} else if ((err = handlesys->ReadHandle(params[1], g_TraceHandle, &sec, (void **)&tr)) != HandleError_None) {
|
||||||
|
return pContext->ThrowNativeError("Invalid Handle %x (error %d)", params[1], err);
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector *normal = &tr->plane.normal;
|
||||||
|
|
||||||
|
cell_t *r;
|
||||||
|
pContext->LocalToPhysAddr(params[2], &r);
|
||||||
|
r[0] = sp_ftoc(normal->x);
|
||||||
|
r[1] = sp_ftoc(normal->y);
|
||||||
|
r[2] = sp_ftoc(normal->z);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static cell_t smn_TRGetEndPosition(IPluginContext *pContext, const cell_t *params)
|
static cell_t smn_TRGetEndPosition(IPluginContext *pContext, const cell_t *params)
|
||||||
{
|
{
|
||||||
trace_t *tr;
|
trace_t *tr;
|
||||||
@ -414,5 +439,6 @@ sp_nativeinfo_t g_TRNatives[] =
|
|||||||
{"TR_GetPointContentsEnt", smn_TRGetPointContentsEnt},
|
{"TR_GetPointContentsEnt", smn_TRGetPointContentsEnt},
|
||||||
{"TR_TraceRayFilter", smn_TRTraceRayFilter},
|
{"TR_TraceRayFilter", smn_TRTraceRayFilter},
|
||||||
{"TR_TraceRayFilterEx", smn_TRTraceRayFilterEx},
|
{"TR_TraceRayFilterEx", smn_TRTraceRayFilterEx},
|
||||||
|
{"TR_GetPlaneNormal", smn_TRGetPlaneNormal},
|
||||||
{NULL, NULL}
|
{NULL, NULL}
|
||||||
};
|
};
|
||||||
|
@ -259,3 +259,13 @@ native bool:TR_DidHit(Handle:hndl=INVALID_HANDLE);
|
|||||||
* @error Invalid Handle.
|
* @error Invalid Handle.
|
||||||
*/
|
*/
|
||||||
native TR_GetHitGroup(Handle:hndl=INVALID_HANDLE);
|
native TR_GetHitGroup(Handle:hndl=INVALID_HANDLE);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find the normal vector to the collison plane of a trace.
|
||||||
|
*
|
||||||
|
* @param hndl A trace Handle, or INVALID_HANDLE to use a global trace result.
|
||||||
|
* @param normal Vector buffer to store the vector normal to the collision plane
|
||||||
|
* @noreturn
|
||||||
|
* @error Invalid Handle
|
||||||
|
*/
|
||||||
|
native TR_GetPlaneNormal(Handle:hndl=INVALID_HANDLE, Float:normal[3]);
|
||||||
|
Loading…
Reference in New Issue
Block a user