您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ CM_TransformedBoxTrace函数代码示例

51自学网 2021-06-01 20:03:10
  C++
这篇教程C++ CM_TransformedBoxTrace函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中CM_TransformedBoxTrace函数的典型用法代码示例。如果您正苦于以下问题:C++ CM_TransformedBoxTrace函数的具体用法?C++ CM_TransformedBoxTrace怎么用?C++ CM_TransformedBoxTrace使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了CM_TransformedBoxTrace函数的26个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: SV_ClipMoveToEntities

/* * ==================== SV_ClipMoveToEntities * * ==================== */voidSV_ClipMoveToEntities(moveclip_t * clip){	int		i, num;	edict_t        *touchlist[MAX_EDICTS], *touch;	trace_t		trace;	int		headnode;	float          *angles;	num = SV_AreaEdicts(clip->boxmins, clip->boxmaxs, touchlist	    ,MAX_EDICTS, AREA_SOLID);	/* be careful, it is possible to have an entity in this */	/* list removed before we get to it (killtriggered) */	for (i = 0; i < num; i++) {		touch = touchlist[i];		if (touch->solid == SOLID_NOT)			continue;		if (touch == clip->passedict)			continue;		if (clip->trace.allsolid)			return;		if (clip->passedict) {			if (touch->owner == clip->passedict)				continue;	/* don't clip against own						 * missiles */			if (clip->passedict->owner == touch)				continue;	/* don't clip against owner */		}		if (!(clip->contentmask & CONTENTS_DEADMONSTER)		    && (touch->svflags & SVF_DEADMONSTER))			continue;		/* might intersect, so do an exact clip */		headnode = SV_HullForEntity(touch);		angles = touch->s.angles;		if (touch->solid != SOLID_BSP)			angles = vec3_origin;	/* boxes don't rotate */		if (touch->svflags & SVF_MONSTER)			trace = CM_TransformedBoxTrace(clip->start, clip->end,			    clip->mins2, clip->maxs2, headnode, clip->contentmask,			    touch->s.origin, angles);		else			trace = CM_TransformedBoxTrace(clip->start, clip->end,			    clip->mins, clip->maxs, headnode, clip->contentmask,			    touch->s.origin, angles);		if (trace.allsolid || trace.startsolid ||		    trace.fraction < clip->trace.fraction) {			trace.ent = touch;			if (clip->trace.startsolid) {				clip->trace = trace;				clip->trace.startsolid = true;			} else				clip->trace = trace;		} else if (trace.startsolid)			clip->trace.startsolid = true;	}}
开发者ID:ZwS,项目名称:qudos,代码行数:65,


示例2: SV_ClipToEntity

/*====================SV_ClipToEntity====================*/void SV_ClipToEntity( trace_t *trace, const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end, int entityNum, int contentmask, int capsule ) {	sharedEntity_t	*touch;	clipHandle_t	clipHandle;	float			*origin, *angles;	touch = SV_GentityNum( entityNum );	Com_Memset(trace, 0, sizeof(trace_t));	// if it doesn't have any brushes of a type we	// are looking for, ignore it	if ( ! ( contentmask & touch->r.contents ) ) {		trace->fraction = 1.0;		return;	}	// might intersect, so do an exact clip	clipHandle = SV_ClipHandleForEntity (touch);	origin = touch->r.currentOrigin;	angles = touch->r.currentAngles;	if ( !touch->r.bmodel ) {		angles = vec3_origin;	// boxes don't rotate	}	CM_TransformedBoxTrace ( trace, (float *)start, (float *)end,		(float *)mins, (float *)maxs, clipHandle,  contentmask,		origin, angles, capsule);	if ( trace->fraction < 1 ) {		trace->entityNum = touch->s.number;	}}
开发者ID:Lrns123,项目名称:jkaq3,代码行数:40,


示例3: TV_Module_CM_TransformedBoxTrace

static inline void TV_Module_CM_TransformedBoxTrace( relay_t *relay, trace_t *tr, vec3_t start, vec3_t end,													vec3_t mins, vec3_t maxs, struct cmodel_s *cmodel, int brushmask, vec3_t origin, vec3_t angles ){	if( !relay )	{		Com_Printf( "Error: TV_Module_CM_TransformedBoxTrace: Relay not set/n" );		return;	}	CM_TransformedBoxTrace( relay->cms, tr, start, end, mins, maxs, cmodel, brushmask, origin, angles );}
开发者ID:Clever-Boy,项目名称:qfusion,代码行数:11,


示例4: CM_HeadnodeForBoxHull

bool CEngineTrace::ClipRayToBBox( const Ray_t &ray, unsigned int fMask, ICollideable *pEntity, trace_t *pTrace ){	if ( pEntity->GetSolid() != SOLID_BBOX )		return false;	int nHeadNode = CM_HeadnodeForBoxHull( pEntity->WorldAlignMins(), pEntity->WorldAlignMaxs() );	// bboxes don't rotate	CM_TransformedBoxTrace( ray, nHeadNode, fMask, pEntity->GetCollisionOrigin(), vec3_angle, *pTrace );	return true;}
开发者ID:RaisingTheDerp,项目名称:raisingthebar,代码行数:11,


示例5: EnumElement

	IterationRetval_t EnumElement( IHandleEntity *pHandleEntity )	{		// Static props should never be in the trigger list 		Assert( !StaticPropMgr()->IsStaticProp( pHandleEntity ) );		IServerNetworkable *pNetworkable = static_cast<IServerNetworkable*>( pHandleEntity );		Assert( pNetworkable );		// Convert the IHandleEntity to an edict_t*...		// Context is the thing we're testing everything against				edict_t* pTouch = pNetworkable->GetEdict();		// Can't bump against itself		if ( pTouch == m_pEnt )			return ITERATION_CONTINUE;		IServerEntity *serverEntity = pTouch->GetIServerEntity();		if ( !serverEntity )			return ITERATION_CONTINUE;		// Hmmm.. everything in this list should be a trigger....		ICollideable *pCollideable = serverEntity->GetCollideable();		Assert(pCollideable->GetSolidFlags() & FSOLID_TRIGGER );		if ( (pCollideable->GetSolidFlags() & FSOLID_TRIGGER) == 0 )			return ITERATION_CONTINUE;		model_t* pModel = sv.GetModel( pCollideable->GetCollisionModelIndex() );		if ( pModel && pModel->type == mod_brush )		{			int headnode = SV_HullForEntity( pTouch );			int contents;			if (!m_Ray.m_IsSwept)			{				contents = CM_TransformedBoxContents( m_Ray.m_Start, m_mins, m_maxs,					headnode, serverEntity->GetAbsOrigin(), serverEntity->GetAbsAngles() );			}			else			{				trace_t trace;				CM_TransformedBoxTrace( m_Ray, headnode, MASK_ALL, serverEntity->GetAbsOrigin(), 					serverEntity->GetAbsAngles(), trace );				contents = trace.contents;			}			if ( !(contents & MASK_SOLID) )				return ITERATION_CONTINUE;		}		m_TouchedEntities.AddToTail( pTouch );		return ITERATION_CONTINUE;	}
开发者ID:RaisingTheDerp,项目名称:raisingthebar,代码行数:53,


示例6: SV_EntityContact

/*==================SV_GameAreaEntities==================*/bool SV_EntityContact(vec3_t mins, vec3_t maxs, const sharedEntity_t * gEnt, traceType_t type) {	const float		*origin, *angles;	clipHandle_t	ch;	trace_t			trace;	// check for exact collision	origin = gEnt->r.currentOrigin;	angles = gEnt->r.currentAngles;	ch = SV_ClipHandleForEntity( gEnt );	CM_TransformedBoxTrace(&trace, vec3_origin, vec3_origin, mins, maxs, ch, -1, origin, angles, type);	return trace.startsolid;}
开发者ID:TheDushan,项目名称:OpenWolf,代码行数:19,


示例7: CM_InlineModelNumber

//-----------------------------------------------------------------------------// Perform bsp trace//-----------------------------------------------------------------------------bool CEngineTrace::ClipRayToBSP( const Ray_t &ray, unsigned int fMask, ICollideable *pEntity, trace_t *pTrace ){	const model_t *pModel = pEntity->GetCollisionModel();	if ( pModel && pModel->type == mod_brush )	{		int nModelIndex = pEntity->GetCollisionModelIndex();		cmodel_t *pCModel = CM_InlineModelNumber( nModelIndex - 1 );		int nHeadNode = pCModel->headnode;		CM_TransformedBoxTrace( ray, nHeadNode, fMask, pEntity->GetCollisionOrigin(), pEntity->GetCollisionAngles(), *pTrace );		return true;	}	return false;}
开发者ID:RaisingTheDerp,项目名称:raisingthebar,代码行数:17,


示例8: SV_ClipMoveToEntities

/*====================SV_ClipMoveToEntities====================*/static void SV_ClipMoveToEntities(vec3_t start, vec3_t mins, vec3_t maxs, vec3_t end,                                  edict_t *passedict, int contentmask, trace_t *tr){    vec3_t      boxmins, boxmaxs;    int         i, num;    edict_t     *touchlist[MAX_EDICTS], *touch;    trace_t     trace;    // create the bounding box of the entire move    for (i = 0; i < 3; i++) {        if (end[i] > start[i]) {            boxmins[i] = start[i] + mins[i] - 1;            boxmaxs[i] = end[i] + maxs[i] + 1;        } else {            boxmins[i] = end[i] + mins[i] - 1;            boxmaxs[i] = start[i] + maxs[i] + 1;        }    }    num = SV_AreaEdicts(boxmins, boxmaxs, touchlist, MAX_EDICTS, AREA_SOLID);    // be careful, it is possible to have an entity in this    // list removed before we get to it (killtriggered)    for (i = 0; i < num; i++) {        touch = touchlist[i];        if (touch->solid == SOLID_NOT)            continue;        if (touch == passedict)            continue;        if (tr->allsolid)            return;        if (passedict) {            if (touch->owner == passedict)                continue;    // don't clip against own missiles            if (passedict->owner == touch)                continue;    // don't clip against owner        }        if (!(contentmask & CONTENTS_DEADMONSTER)            && (touch->svflags & SVF_DEADMONSTER))            continue;        // might intersect, so do an exact clip        CM_TransformedBoxTrace(&trace, start, end, mins, maxs,                               SV_HullForEntity(touch), contentmask,                               touch->s.origin, touch->s.angles);        CM_ClipEntity(tr, &trace, touch);    }}
开发者ID:Jenco420,项目名称:q2pro,代码行数:56,


示例9: R_Trace

/** * @brief Moves the given mins/maxs volume through the world from start to end. * @param[in] start Start vector to start the trace from * @param[in] end End vector to stop the trace at * @param[in] size Bounding box size used for tracing * @param[in] contentmask Searched content the trace should watch for */void R_Trace (const vec3_t start, const vec3_t end, float size, int contentmask){	vec3_t mins, maxs;	float frac;	trace_t tr;	int i;	r_locals.tracenum++;	if (r_locals.tracenum > 0xffff)  /* avoid overflows */		r_locals.tracenum = 0;	VectorSet(mins, -size, -size, -size);	VectorSet(maxs, size, size, size);	refdef.trace = CM_CompleteBoxTrace(refdef.mapTiles, start, end, mins, maxs, TRACING_ALL_VISIBLE_LEVELS, contentmask, 0);	refdef.traceEntity = NULL;	frac = refdef.trace.fraction;	/* check bsp models */	for (i = 0; i < refdef.numEntities; i++) {		entity_t *ent = R_GetEntity(i);		const model_t *m = ent->model;		if (!m || m->type != mod_bsp_submodel)			continue;		tr = CM_TransformedBoxTrace(&(refdef.mapTiles->mapTiles[m->bsp.maptile]), start, end, mins, maxs, m->bsp.firstnode,				contentmask, 0, ent->origin, ent->angles);		if (tr.fraction < frac) {			refdef.trace = tr;			refdef.traceEntity = ent;			frac = tr.fraction;		}	}	assert(refdef.trace.mapTile >= 0);	assert(refdef.trace.mapTile < r_numMapTiles);}
开发者ID:ptitSeb,项目名称:UFO--AI-OpenPandora,代码行数:49,


示例10: SV_ClipToEntity

/* * SV_ClipToEntity * */voidSV_ClipToEntity(Trace *trace, const Vec3 start, const Vec3 mins,		const Vec3 maxs, const Vec3 end, int entityNum,		int contentmask,		int capsule){	Sharedent	*touch;	Cliphandle	clipHandle;	float *origin, *angles;	touch = SV_GentityNum(entityNum);	Q_Memset(trace, 0, sizeof(Trace));	/* if it doesn't have any brushes of a type we	 * are looking for, ignore it */	if(!(contentmask & touch->r.contents)){		trace->fraction = 1.0;		return;	}	/* might intersect, so do an exact clip */	clipHandle = SV_ClipHandleForEntity (touch);	origin	= touch->r.currentOrigin;	angles	= touch->r.currentAngles;	if(!touch->r.bmodel)		angles = vec3_origin;	/* boxes don't rotate */	CM_TransformedBoxTrace (trace, (float*)start, (float*)end,		(float*)mins, (float*)maxs, clipHandle,  contentmask,		origin, angles, capsule);	if(trace->fraction < 1)		trace->entityNum = touch->s.number;}
开发者ID:icanhas,项目名称:yantar,代码行数:41,


示例11: SV_ClipMoveToEntities

/*=======================================================================================================================================SV_ClipMoveToEntities=======================================================================================================================================*/void SV_ClipMoveToEntities(moveclip_t *clip) {	int i, num;	int touchlist[MAX_GENTITIES];	sharedEntity_t *touch;	int passOwnerNum;	trace_t trace;	clipHandle_t clipHandle;	float *origin, *angles;	num = SV_AreaEntities(clip->boxmins, clip->boxmaxs, touchlist, MAX_GENTITIES);	if (clip->passEntityNum != ENTITYNUM_NONE) {		passOwnerNum = (SV_GentityNum(clip->passEntityNum))->r.ownerNum;		if (passOwnerNum == ENTITYNUM_NONE) {			passOwnerNum = -1;		}	} else {		passOwnerNum = -1;	}	for (i = 0; i < num; i++) {		if (clip->trace.allsolid) {			return;		}		touch = SV_GentityNum(touchlist[i]);		// see if we should ignore this entity		if (clip->passEntityNum != ENTITYNUM_NONE) {			if (touchlist[i] == clip->passEntityNum) {				continue; // don't clip against the pass entity			}			if (touch->r.ownerNum == clip->passEntityNum) {				continue; // don't clip against own missiles			}			if (touch->r.ownerNum == passOwnerNum) {				continue; // don't clip against other missiles from our owner			}		}		// if it doesn't have any brushes of a type we are looking for, ignore it		if (!(clip->contentmask & touch->r.contents)) {			continue;		}		// might intersect, so do an exact clip		clipHandle = SV_ClipHandleForEntity(touch);		// non-worldspawn entities must not use world as clip model!		if (clipHandle == 0) {			continue;		}		// if clipping against BBOX, set to correct contents		if (clipHandle == BOX_MODEL_HANDLE) {			CM_SetTempBoxModelContents(touch->r.contents);		}		origin = touch->r.currentOrigin;		angles = touch->r.currentAngles;		if (!touch->r.bmodel) {			angles = vec3_origin; // boxes don't rotate		}		CM_TransformedBoxTrace(&trace, clip->start, clip->end, clip->mins, clip->maxs, clipHandle, clip->contentmask, origin, angles, clip->capsule);		if (trace.allsolid) {			clip->trace.allsolid = qtrue;			trace.entityNum = touch->s.number;		} else if (trace.startsolid) {			clip->trace.startsolid = qtrue;			trace.entityNum = touch->s.number;		}		if (trace.fraction < clip->trace.fraction) {			// make sure we keep a startsolid from a previous trace			qboolean oldStart = clip->trace.startsolid;			trace.entityNum = touch->s.number;			clip->trace = trace;			clip->trace.startsolid |= oldStart;		}		// reset contents to default		if (clipHandle == BOX_MODEL_HANDLE) {			CM_SetTempBoxModelContents(CONTENTS_BODY);		}	}}
开发者ID:ioid3-games,项目名称:ioid3-wet,代码行数:92,


示例12: SV_ClipMoveToEntities

/*====================SV_ClipMoveToEntities====================*/void SV_ClipMoveToEntities( moveclip_t *clip ) {	int			i, num;	int			touchlist[MAX_GENTITIES];	sharedEntity_t *touch;	int			passOwnerNum;	trace_t		trace, oldTrace;	clipHandle_t	clipHandle;	float		*origin, *angles;	int			thisOwnerShared = 1;	num = SV_AreaEntities( clip->boxmins, clip->boxmaxs, touchlist, MAX_GENTITIES);	if ( clip->passEntityNum != ENTITYNUM_NONE ) {		passOwnerNum = ( SV_GentityNum( clip->passEntityNum ) )->r.ownerNum;		if ( passOwnerNum == ENTITYNUM_NONE ) {			passOwnerNum = -1;		}	} else {		passOwnerNum = -1;	}	if ( SV_GentityNum(clip->passEntityNum)->r.svFlags & SVF_OWNERNOTSHARED )	{		thisOwnerShared = 0;	}	for ( i=0 ; i<num ; i++ ) {		if ( clip->trace.allsolid ) {			return;		}		touch = SV_GentityNum( touchlist[i] );		// see if we should ignore this entity		if ( clip->passEntityNum != ENTITYNUM_NONE ) {			if ( touchlist[i] == clip->passEntityNum ) {				continue;	// don't clip against the pass entity			}			if ( touch->r.ownerNum == clip->passEntityNum) {				if (touch->r.svFlags & SVF_OWNERNOTSHARED)				{					if ( clip->contentmask != (MASK_SHOT | CONTENTS_LIGHTSABER) &&						clip->contentmask != (MASK_SHOT))					{ //it's not a laser hitting the other "missile", don't care then						continue;					}				}				else				{					continue;	// don't clip against own missiles				}			}			if ( touch->r.ownerNum == passOwnerNum &&				!(touch->r.svFlags & SVF_OWNERNOTSHARED) &&				!thisOwnerShared ) {				continue;	// don't clip against other missiles from our owner			}		}		// if it doesn't have any brushes of a type we		// are looking for, ignore it		if ( ! ( clip->contentmask & touch->r.contents ) ) {			continue;		}		if ((clip->contentmask == (MASK_SHOT|CONTENTS_LIGHTSABER) || clip->contentmask == MASK_SHOT) && (touch->r.contents > 0 && (touch->r.contents & CONTENTS_NOSHOT)))		{			continue;		}		// might intersect, so do an exact clip		clipHandle = SV_ClipHandleForEntity (touch);		origin = touch->r.currentOrigin;		angles = touch->r.currentAngles;		if ( !touch->r.bmodel ) {			angles = vec3_origin;	// boxes don't rotate		}		CM_TransformedBoxTrace ( &trace, (float *)clip->start, (float *)clip->end,			(float *)clip->mins, (float *)clip->maxs, clipHandle,  clip->contentmask,			origin, angles, clip->capsule);/*Ghoul2 Insert Start*/		// keep these older variables around for a bit, incase we need to replace them in the Ghoul2 Collision check		oldTrace = clip->trace;/*Ghoul2 Insert End*///.........这里部分代码省略.........
开发者ID:5Quintessential,项目名称:jedioutcast,代码行数:101,


示例13: SV_ClipMoveToEntity

__cdecl void SV_ClipMoveToEntity(moveclip_t *clip, svEntity_t *entity, trace_t *trace){	gentity_t	*touch;	int		touchNum;	float		*origin, *angles;	vec3_t		mins, maxs;	float		oldfraction;	clipHandle_t	clipHandle;	touchNum = entity - sv.svEntities;	touch = SV_GentityNum( touchNum );	if( !(clip->contentmask & touch->r.contents))		return;	if ( clip->passEntityNum != ENTITYNUM_NONE ) {		if( touchNum == clip->passEntityNum )			return;		if(touch->r.ownerNum){					if( touch->r.ownerNum - 1 == clip->passEntityNum )			    return;			if( touch->r.ownerNum - 1 == clip->passOwnerNum )			    return;				}		if(!G_ShouldEntitiesClip(clip, touchNum, touch))			return;	}	VectorAdd(touch->r.absmin, clip->mins, mins);	VectorAdd(touch->r.absmax, clip->maxs, maxs);	if(CM_TraceBox(clip->extents.start, mins, maxs, trace->fraction))		return;		clipHandle = SV_ClipHandleForEntity(touch);	origin = touch->r.currentOrigin;	angles = touch->r.currentAngles;	if ( !touch->r.bmodel ) {		angles = vec3_origin;   // boxes don't rotate	}	oldfraction = trace->fraction;	CM_TransformedBoxTrace( trace, clip->extents.start, clip->extents.end,				clip->mins, clip->maxs, clipHandle, clip->contentmask, origin, angles );	if ( trace->fraction < oldfraction ) {		trace->var_02 = qtrue;		trace->entityNum = touch->s.number;	}}
开发者ID:Call-of-Duty-Scripts,项目名称:CoD4x1.8_Server_Pub,代码行数:62,


示例14: SV_ClipMoveToEntities

static void SV_ClipMoveToEntities(trace_t &trace, const CVec3 &start, const CVec3 &end, const CBox &bounds, edict_t *passedict, int contentmask){	guard(SV_ClipMoveToEntities);	if (trace.allsolid) return;	int		i;	CVec3 amins, amaxs;	for (i = 0; i < 3; i++)	{		if (start[i] < end[i])		{			amins[i] = bounds.mins[i] + start[i];			amaxs[i] = bounds.maxs[i] + end[i];		}		else		{			amins[i] = bounds.mins[i] + end[i];			amaxs[i] = bounds.maxs[i] + start[i];		}	}	edict_t	*list[MAX_EDICTS];	int num = SV_AreaEdicts(amins, amaxs, ARRAY_ARG(list), AREA_SOLID);	if (!num) return;	float b1 = dot(bounds.mins, bounds.mins);	float b2 = dot(bounds.maxs, bounds.maxs);	float t = max(b1, b2);	float traceWidth = SQRTFAST(t);	CVec3 traceDir;	VectorSubtract(end, start, traceDir);	float traceLen = traceDir.Normalize() + traceWidth;	for (i = 0; i < num; i++)	{		edict_t *edict = list[i];		entityHull_t &ent = ents[NUM_FOR_EDICT(edict)];//		if (!ent->linked) continue;		if (edict->solid == SOLID_NOT || edict == passedict) continue;		if (passedict)		{		 	if (edict->owner == passedict)				continue;	// don't clip against own missiles			if (passedict->owner == edict)				continue;	// don't clip against owner		}		if (!(contentmask & CONTENTS_DEADMONSTER) && (edict->svflags & SVF_DEADMONSTER))			continue;		CVec3 eCenter;		VectorSubtract(ent.center, start, eCenter);		// check position of point projection on line		float entPos = dot(eCenter, traceDir);		if (entPos < -traceWidth - ent.radius || entPos > traceLen + ent.radius)			continue;		// too near / too far		// check distance between point and line		CVec3 tmp;		VectorMA(eCenter, -entPos, traceDir, tmp);		float dist2 = dot(tmp, tmp);		float dist0 = ent.radius + traceWidth;		if (dist2 >= dist0 * dist0) continue;		trace_t	tr;		if (ent.model)			CM_TransformedBoxTrace(tr, start, end, bounds, ent.model->headnode, contentmask, edict->s.origin, ent.axis);		else			CM_TransformedBoxTrace(tr, start, end, bounds, CM_HeadnodeForBox(ent.bounds), contentmask, edict->s.origin, nullVec3);		if (CM_CombineTrace(trace, tr))			trace.ent = edict;		if (trace.allsolid) return;	}	unguard;}
开发者ID:RkShaRkz,项目名称:Quake2,代码行数:77,


示例15: SV_ClipMoveToEntities

static void SV_ClipMoveToEntities( moveclip_t *clip ) {	int			i, num;	int			touchlist[MAX_GENTITIES];	sharedEntity_t *touch;	int			passOwnerNum;	trace_t		trace;	clipHandle_t	clipHandle;	vector3		*origin, *angles;	num = SV_AreaEntities( &clip->boxmins, &clip->boxmaxs, touchlist, MAX_GENTITIES);	if ( clip->passEntityNum != ENTITYNUM_NONE ) {		passOwnerNum = ( SV_GentityNum( clip->passEntityNum ) )->r.ownerNum;		if ( passOwnerNum == ENTITYNUM_NONE ) {			passOwnerNum = -1;		}	} else {		passOwnerNum = -1;	}	for ( i=0 ; i<num ; i++ ) {		if ( clip->trace.allsolid ) {			return;		}		touch = SV_GentityNum( touchlist[i] );		// see if we should ignore this entity		if ( clip->passEntityNum != ENTITYNUM_NONE ) {			if ( touchlist[i] == clip->passEntityNum ) {				continue;	// don't clip against the pass entity			}			//QTZTODO: Missiles colliding with eachother from https://github.com/dmead/jkaq3/commit/1d1e1fefb04fab8ceb42537702d946c1a75f4812			if ( touch->r.ownerNum == clip->passEntityNum // don't clip against own missiles				|| touch->r.ownerNum == passOwnerNum ) // don't clip against other missiles from our owner				continue;		}		// if it doesn't have any brushes of a type we		// are looking for, ignore it		if ( ! ( clip->contentmask & touch->r.contents ) ) {			continue;		}		// might intersect, so do an exact clip		clipHandle = SV_ClipHandleForEntity (touch);		origin = &touch->r.currentOrigin;		angles = &touch->r.currentAngles;		if ( !touch->r.bmodel ) {			angles = &vec3_origin;	// boxes don't rotate		}		CM_TransformedBoxTrace( &trace, (vector3 *)clip->start, &clip->end, (vector3 *)clip->mins, (vector3 *)clip->maxs, clipHandle, clip->contentmask, origin, angles, clip->capsule );		if ( trace.allsolid ) {			clip->trace.allsolid = qtrue;			trace.entityNum = touch->s.number;		} else if ( trace.startsolid ) {			clip->trace.startsolid = qtrue;			trace.entityNum = touch->s.number;		}		if ( trace.fraction < clip->trace.fraction ) {			qboolean	oldStart;			// make sure we keep a startsolid from a previous trace			oldStart = clip->trace.startsolid;			trace.entityNum = touch->s.number;			clip->trace = trace;			clip->trace.startsolid |= oldStart;		}	}}
开发者ID:Razish,项目名称:QtZ,代码行数:76,


示例16: SV_ClipMoveToEntities

static void SV_ClipMoveToEntities( moveclip_t *clip ) {	static int	touchlist[MAX_GENTITIES];	int			i, num;	sharedEntity_t *touch;	int			passOwnerNum;	trace_t		trace, oldTrace= {0};	clipHandle_t	clipHandle;	float		*origin, *angles;	int			thisOwnerShared = 1;	num = SV_AreaEntities( clip->boxmins, clip->boxmaxs, touchlist, MAX_GENTITIES);	if ( clip->passEntityNum != ENTITYNUM_NONE ) {		passOwnerNum = ( SV_GentityNum( clip->passEntityNum ) )->r.ownerNum;		if ( passOwnerNum == ENTITYNUM_NONE ) {			passOwnerNum = -1;		}	} else {		passOwnerNum = -1;	}	if ( SV_GentityNum(clip->passEntityNum)->r.svFlags & SVF_OWNERNOTSHARED )	{		thisOwnerShared = 0;	}	for ( i=0 ; i<num ; i++ ) {		if ( clip->trace.allsolid ) {			return;		}		touch = SV_GentityNum( touchlist[i] );		// see if we should ignore this entity		if ( clip->passEntityNum != ENTITYNUM_NONE ) {			if ( touchlist[i] == clip->passEntityNum ) {				continue;	// don't clip against the pass entity			}			if ( touch->r.ownerNum == clip->passEntityNum) {				if (touch->r.svFlags & SVF_OWNERNOTSHARED)				{					if ( clip->contentmask != (MASK_SHOT | CONTENTS_LIGHTSABER) &&						clip->contentmask != (MASK_SHOT))					{ //it's not a laser hitting the other "missile", don't care then						continue;					}				}				else				{					continue;	// don't clip against own missiles				}			}			if ( touch->r.ownerNum == passOwnerNum &&				!(touch->r.svFlags & SVF_OWNERNOTSHARED) &&				thisOwnerShared ) {				continue;	// don't clip against other missiles from our owner			}			if (touch->s.eType == ET_MISSILE &&				!(touch->r.svFlags & SVF_OWNERNOTSHARED) &&				touch->r.ownerNum == passOwnerNum)			{ //blah, hack				continue;			}		}		// if it doesn't have any brushes of a type we		// are looking for, ignore it		if ( ! ( clip->contentmask & touch->r.contents ) ) {			continue;		}		if ((clip->contentmask == (MASK_SHOT|CONTENTS_LIGHTSABER) || clip->contentmask == MASK_SHOT) && (touch->r.contents > 0 && (touch->r.contents & CONTENTS_NOSHOT)))		{			continue;		}		// might intersect, so do an exact clip		clipHandle = SV_ClipHandleForEntity (touch);		origin = touch->r.currentOrigin;		angles = touch->r.currentAngles;		if ( !touch->r.bmodel ) {			angles = vec3_origin;	// boxes don't rotate		}		CM_TransformedBoxTrace ( &trace, (float *)clip->start, (float *)clip->end,			(float *)clip->mins, (float *)clip->maxs, clipHandle,  clip->contentmask,			origin, angles, clip->capsule);		if (clip->traceFlags & G2TRFLAG_DOGHOULTRACE)		{ // keep these older variables around for a bit, incase we need to replace them in the Ghoul2 Collision check			oldTrace = clip->trace;		}		if ( trace.allsolid ) {			clip->trace.allsolid = qtrue;			trace.entityNum = touch->s.number;//.........这里部分代码省略.........
开发者ID:mh94,项目名称:OpenJK,代码行数:101,


示例17: CL_CgameSystemCalls

//.........这里部分代码省略.........        case CG_UPDATESCREEN:            // this is used during lengthy level loading, so pump message loop            //		Com_EventLoop();	// FIXME: if a server restarts here, BAD THINGS HAPPEN!            // We can't call Com_EventLoop here, a restart will crash and this _does_ happen            // if there is a map change while we are downloading at pk3.            // ZOID            SCR_UpdateScreen();            return 0;        case CG_CM_LOADMAP:            CL_CM_LoadMap( (const char*)VMA(1) );            return 0;        case CG_CM_NUMINLINEMODELS:            return CM_NumInlineModels();        case CG_CM_INLINEMODEL:            return CM_InlineModel( args[1] );        case CG_CM_TEMPBOXMODEL:            return CM_TempBoxModel( (const float*)VMA(1), (const float*)VMA(2), false );        case CG_CM_TEMPCAPSULEMODEL:            return CM_TempBoxModel( (const float*)VMA(1), (const float*)VMA(2), true );        case CG_CM_POINTCONTENTS:            return CM_PointContents( (const float*)VMA(1), args[2] );        case CG_CM_TRANSFORMEDPOINTCONTENTS:            return CM_TransformedPointContents( (const float*)VMA(1), (clipHandle_t)args[2],                                                (const float*)VMA(3), (const float*)VMA(4) );        case CG_CM_BOXTRACE:            CM_BoxTrace( (trace_t*)VMA(1), (const float*)VMA(2), (const float*)VMA(3),                         (float*)VMA(4), (float*)VMA(5), (clipHandle_t)args[6], args[7], TT_AABB );            return 0;        case CG_CM_CAPSULETRACE:            CM_BoxTrace( (trace_t*)VMA(1), (const float*)VMA(2), (const float*)VMA(3),                         (float*)VMA(4), (float*)VMA(5), (clipHandle_t)args[6], args[7], TT_CAPSULE );            return 0;        case CG_CM_TRANSFORMEDBOXTRACE:            CM_TransformedBoxTrace( (trace_t*)VMA(1), (const float*)VMA(2), (const float*)VMA(3),                                    (float*)VMA(4), (float*)VMA(5), (clipHandle_t)args[6], args[7],                                    (const float*)VMA(8), (const float*)VMA(9), TT_AABB );            return 0;        case CG_CM_TRANSFORMEDCAPSULETRACE:            CM_TransformedBoxTrace( (trace_t*)VMA(1), (const float*)VMA(2), (const float*)VMA(3),                                    (float*)VMA(4), (float*)VMA(5), (clipHandle_t)args[6], args[7],                                    (const float*)VMA(8), (const float*)VMA(9), TT_CAPSULE );            return 0;        case CG_CM_BISPHERETRACE:            CM_BiSphereTrace( (trace_t*)VMA(1), (const float*)VMA(2), (const float*)VMA(3), VMF(4), VMF(5), (clipHandle_t)args[6], args[7] );            return 0;        case CG_CM_TRANSFORMEDBISPHERETRACE:            CM_TransformedBiSphereTrace( (trace_t*)VMA(1), (const float*)VMA(2), (const float*)VMA(3),                                         VMF(4), VMF(5), (clipHandle_t)args[6], args[7], (const float*)VMA(8) );            return 0;        case CG_CM_MARKFRAGMENTS:            {            float (&arg2)[3][3] = *reinterpret_cast<float (*)[3][3]>(VMA(2));            return re.MarkFragments( args[1], arg2, (const float*)VMA(3), args[4], (float*)VMA(5), args[6], (markFragment_t*)VMA(7) );            }        case CG_S_STARTSOUND:            S_StartSound( (float*)VMA(1), args[2], args[3], (sfxHandle_t)args[4] );            return 0;        case CG_S_STARTLOCALSOUND:            S_StartLocalSound( (sfxHandle_t)args[1], args[2] );            return 0;        case CG_S_CLEARLOOPINGSOUNDS:            S_ClearLoopingSounds( (bool)args[1] );            return 0;        case CG_S_ADDLOOPINGSOUND:            S_AddLoopingSound( args[1], (const float*)VMA(2), (const float*)VMA(3), (sfxHandle_t)args[4] );            return 0;
开发者ID:wtfbbqhax,项目名称:tremulous,代码行数:67,


示例18: SV_ClipMoveToEntities

/* * SV_ClipMoveToEntities * */static voidSV_ClipMoveToEntities(moveclip_t *clip){	int	i, num;	int	touchlist[MAX_GENTITIES];	Sharedent *touch;	int	passOwnerNum;	Trace trace;	Cliphandle clipHandle;	float	*origin, *angles;	num = SV_AreaEntities(clip->boxmins, clip->boxmaxs, touchlist,		MAX_GENTITIES);	if(clip->passEntityNum != ENTITYNUM_NONE){		passOwnerNum = (SV_GentityNum(clip->passEntityNum))->r.ownerNum;		if(passOwnerNum == ENTITYNUM_NONE)			passOwnerNum = -1;	}else		passOwnerNum = -1;	for(i=0; i<num; i++){		if(clip->trace.allsolid)			return;		touch = SV_GentityNum(touchlist[i]);		/* see if we should ignore this entity */		if(clip->passEntityNum != ENTITYNUM_NONE){			if(touchlist[i] == clip->passEntityNum)				continue;	/* don't clip against the pass entity */			if(touch->r.ownerNum == clip->passEntityNum)				continue;	/* don't clip against own missiles */			if(touch->r.ownerNum == passOwnerNum)				continue;	/* don't clip against other missiles from our owner */		}		/* if it doesn't have any brushes of a type we		 * are looking for, ignore it */		if(!(clip->contentmask & touch->r.contents))			continue;		/* might intersect, so do an exact clip */		clipHandle = SV_ClipHandleForEntity (touch);		origin	= touch->r.currentOrigin;		angles	= touch->r.currentAngles;		if(!touch->r.bmodel)			angles = vec3_origin;	/* boxes don't rotate */		CM_TransformedBoxTrace (&trace, (float*)clip->start,			(float*)clip->end,			(float*)clip->mins, (float*)clip->maxs, clipHandle,			clip->contentmask,			origin, angles,			clip->capsule);		if(trace.allsolid){			clip->trace.allsolid = qtrue;			trace.entityNum = touch->s.number;		}else if(trace.startsolid){			clip->trace.startsolid = qtrue;			trace.entityNum = touch->s.number;		}		if(trace.fraction < clip->trace.fraction){			qbool oldStart;			/* make sure we keep a startsolid from a previous trace */			oldStart = clip->trace.startsolid;			trace.entityNum = touch->s.number;			clip->trace = trace;			clip->trace.startsolid |= oldStart;		}	}}
开发者ID:icanhas,项目名称:yantar,代码行数:82,


示例19: CL_CgameSystemCalls

intptr_t CL_CgameSystemCalls(intptr_t *args){	switch (args[0])	{	case CG_PRINT:		Com_Printf("%s", (char *)VMA(1));		return 0;	case CG_ERROR:		Com_Error(ERR_DROP, "%s", (char *)VMA(1));		return 0;	case CG_MILLISECONDS:		return Sys_Milliseconds();	case CG_CVAR_REGISTER:		Cvar_Register(VMA(1), VMA(2), VMA(3), args[4]);		return 0;	case CG_CVAR_UPDATE:		Cvar_Update(VMA(1));		return 0;	case CG_CVAR_SET:		Cvar_SetSafe(VMA(1), VMA(2));		return 0;	case CG_CVAR_VARIABLESTRINGBUFFER:		Cvar_VariableStringBuffer(VMA(1), VMA(2), args[3]);		return 0;	case CG_CVAR_LATCHEDVARIABLESTRINGBUFFER:		Cvar_LatchedVariableStringBuffer(VMA(1), VMA(2), args[3]);		return 0;	case CG_ARGC:		return Cmd_Argc();	case CG_ARGV:		Cmd_ArgvBuffer(args[1], VMA(2), args[3]);		return 0;	case CG_ARGS:		Cmd_ArgsBuffer(VMA(1), args[2]);		return 0;	case CG_FS_FOPENFILE:		return FS_FOpenFileByMode(VMA(1), VMA(2), args[3]);	case CG_FS_READ:		FS_Read(VMA(1), args[2], args[3]);		return 0;	case CG_FS_WRITE:		return FS_Write(VMA(1), args[2], args[3]);	case CG_FS_FCLOSEFILE:		FS_FCloseFile(args[1]);		return 0;	case CG_FS_GETFILELIST:		return FS_GetFileList(VMA(1), VMA(2), VMA(3), args[4]);	case CG_FS_DELETEFILE:		return FS_Delete(VMA(1));	case CG_SENDCONSOLECOMMAND:		Cbuf_AddText(VMA(1));		return 0;	case CG_ADDCOMMAND:		CL_AddCgameCommand(VMA(1));		return 0;	case CG_REMOVECOMMAND:		Cmd_RemoveCommandSafe(VMA(1));		return 0;	case CG_SENDCLIENTCOMMAND:		CL_AddReliableCommand(VMA(1));		return 0;	case CG_UPDATESCREEN:		SCR_UpdateScreen();		return 0;	case CG_CM_LOADMAP:		CL_CM_LoadMap(VMA(1));		return 0;	case CG_CM_NUMINLINEMODELS:		return CM_NumInlineModels();	case CG_CM_INLINEMODEL:		return CM_InlineModel(args[1]);	case CG_CM_TEMPBOXMODEL:		return CM_TempBoxModel(VMA(1), VMA(2), qfalse);	case CG_CM_TEMPCAPSULEMODEL:		return CM_TempBoxModel(VMA(1), VMA(2), qtrue);	case CG_CM_POINTCONTENTS:		return CM_PointContents(VMA(1), args[2]);	case CG_CM_TRANSFORMEDPOINTCONTENTS:		return CM_TransformedPointContents(VMA(1), args[2], VMA(3), VMA(4));	case CG_CM_BOXTRACE:		CM_BoxTrace(VMA(1), VMA(2), VMA(3), VMA(4), VMA(5), args[6], args[7], /*int capsule*/ qfalse);		return 0;	case CG_CM_CAPSULETRACE:		CM_BoxTrace(VMA(1), VMA(2), VMA(3), VMA(4), VMA(5), args[6], args[7], /*int capsule*/ qtrue);		return 0;	case CG_CM_TRANSFORMEDBOXTRACE:		CM_TransformedBoxTrace(VMA(1), VMA(2), VMA(3), VMA(4), VMA(5), args[6], args[7], VMA(8), VMA(9), /*int capsule*/ qfalse);		return 0;	case CG_CM_TRANSFORMEDCAPSULETRACE:		CM_TransformedBoxTrace(VMA(1), VMA(2), VMA(3), VMA(4), VMA(5), args[6], args[7], VMA(8), VMA(9), /*int capsule*/ qtrue);		return 0;	case CG_CM_MARKFRAGMENTS:		return re.MarkFragments(args[1], VMA(2), VMA(3), args[4], VMA(5), args[6], VMA(7));	case CG_R_PROJECTDECAL:		re.ProjectDecal(args[1], args[2], VMA(3), VMA(4), VMA(5), args[6], args[7]);		return 0;	case CG_R_CLEARDECALS:		re.ClearDecals();		return 0;//.........这里部分代码省略.........
开发者ID:Mailaender,项目名称:etlegacy,代码行数:101,


示例20: CL_CgameSystemCalls

/*====================CL_CgameSystemCallsThe cgame module is making a system call====================*/intptr_t CL_CgameSystemCalls( intptr_t *args ) {	switch( args[0] ) {	case CG_PRINT:		Com_Printf( "%s", VMA(1) );		return 0;	case CG_FATAL_ERROR:		Com_Error( ERR_DROP, "%s", VMA(1) );		return 0;	case CG_MILLISECONDS:		return Sys_Milliseconds();	case CG_CVAR_REGISTER:		Cvar_Register( VMA(1), VMA(2), VMA(3), args[4] ); 		return 0;	case CG_CVAR_UPDATE:		Cvar_Update( VMA(1) );		return 0;	case CG_CVAR_SET:		Cvar_Set( VMA(1), VMA(2) );		return 0;	case CG_CVAR_VARIABLESTRINGBUFFER:		Cvar_VariableStringBuffer( VMA(1), VMA(2), args[3] );		return 0;	case CG_ARGC:		return Cmd_Argc();	case CG_ARGV:		Cmd_ArgvBuffer( args[1], VMA(2), args[3] );		return 0;	case CG_ARGVI:		return atoi( Cmd_Argv( args[1] ) );	case CG_ARGS:		Cmd_ArgsBuffer( VMA(1), args[2] );		return 0;	case CG_CMD_EXECUTETEXT:		Cbuf_ExecuteText( args[1], VMA(2) );		return 0;	case CG_FS_FOPENFILE:		return FS_FOpenFileByMode( VMA(1), VMA(2), args[3] );	case CG_FS_READ:		FS_Read( VMA(1), args[2], args[3] );		return 0;	case CG_FS_WRITE:		FS_Write( VMA(1), args[2], args[3] );		return 0;	case CG_FS_FCLOSEFILE:		FS_FCloseFile( args[1] );		return 0;	case CG_SENDCONSOLECOMMAND:		Cbuf_AddText( VMA(1) );		return 0;	case CG_FORWARDCOMMAND:		VM_Call( uivm, UI_CONSOLE_COMMAND, cls.realtime );		return 0;	case CG_ADDCOMMAND:		CL_AddCgameCommand( VMA(1) );		return 0;	case CG_REMOVECOMMAND:		Cmd_RemoveCommand( VMA(1) );		return 0;	case CG_SENDCLIENTCOMMAND:		CL_AddReliableCommand( VMA(1) );		return 0;	case CG_UPDATESCREEN:		// this is used during lengthy level loading, so pump message loop//		Com_EventLoop();	// FIXME: if a server restarts here, BAD THINGS HAPPEN!// We can't call Com_EventLoop here, a restart will crash and this _does_ happen// if there is a map change while we are downloading at pk3.// ZOID		SCR_UpdateScreen();		return 0;	case CG_CM_LOADMAP:		CL_CM_LoadMap( VMA(1) );		return 0;	case CG_CM_NUMINLINEMODELS:		return CM_NumInlineModels();	case CG_CM_INLINEMODEL:		return CM_InlineModel( args[1] );	case CG_CM_TEMPBOXMODEL:		return CM_TempBoxModel( VMA(1), VMA(2), /*int capsule*/ qfalse );	case CG_CM_TEMPCAPSULEMODEL:		return CM_TempBoxModel( VMA(1), VMA(2), /*int capsule*/ qtrue );	case CG_CM_POINTCONTENTS:		return CM_PointContents( VMA(1), args[2] );	case CG_CM_TRANSFORMEDPOINTCONTENTS:		return CM_TransformedPointContents( VMA(1), args[2], VMA(3), VMA(4) );	case CG_CM_BOXTRACE:		CM_BoxTrace( VMA(1), VMA(2), VMA(3), VMA(4), VMA(5), args[6], args[7], /*int capsule*/ qfalse );		return 0;	case CG_CM_CAPSULETRACE:		CM_BoxTrace( VMA(1), VMA(2), VMA(3), VMA(4), VMA(5), args[6], args[7], /*int capsule*/ qtrue );		return 0;	case CG_CM_TRANSFORMEDBOXTRACE:		CM_TransformedBoxTrace( VMA(1), VMA(2), VMA(3), VMA(4), VMA(5), args[6], args[7], VMA(8), VMA(9), /*int capsule*/ qfalse );		return 0;//.........这里部分代码省略.........
开发者ID:ballju,项目名称:SpaceTrader-GPL-1.1.14,代码行数:101,


示例21: CL_CgameSystemCalls

/*====================CL_CgameSystemCallsThe cgame module is making a system call====================*/intptr_t CL_CgameSystemCalls( intptr_t *args ) {	switch( args[0] ) {	case CG_PRINT:		Com_Printf( "%s", (const char*)VMA(1) );		return 0;	case CG_ERROR:		Com_Error( ERR_DROP, "%s", (const char*)VMA(1) );		return 0;	case CG_MILLISECONDS:		return Sys_Milliseconds();	case CG_CVAR_REGISTER:		Cvar_Register( VMA(1), VMA(2), VMA(3), args[4] ); 		return 0;	case CG_CVAR_UPDATE:		Cvar_Update( VMA(1) );		return 0;	case CG_CVAR_SET:		Cvar_Set( VMA(1), VMA(2) );		return 0;	case CG_CVAR_VARIABLESTRINGBUFFER:		Cvar_VariableStringBuffer( VMA(1), VMA(2), args[3] );		return 0;	case CG_ARGC:		return Cmd_Argc();	case CG_ARGV:		Cmd_ArgvBuffer( args[1], VMA(2), args[3] );		return 0;	case CG_ARGS:		Cmd_ArgsBuffer( VMA(1), args[2] );		return 0;	case CG_FS_FOPENFILE:		return FS_FOpenFileByMode( VMA(1), VMA(2), args[3] );	case CG_FS_READ:		FS_Read2( VMA(1), args[2], args[3] );		return 0;	case CG_FS_WRITE:		FS_Write( VMA(1), args[2], args[3] );		return 0;	case CG_FS_FCLOSEFILE:		FS_FCloseFile( args[1] );		return 0;	case CG_FS_SEEK:		return FS_Seek( args[1], args[2], args[3] );	case CG_SENDCONSOLECOMMAND:		Cbuf_AddText( VMA(1) );		return 0;	case CG_ADDCOMMAND:		CL_AddCgameCommand( VMA(1) );		return 0;	case CG_REMOVECOMMAND:		Cmd_RemoveCommand( VMA(1) );		return 0;	case CG_SENDCLIENTCOMMAND:		CL_AddReliableCommand( VMA(1) );		return 0;	case CG_UPDATESCREEN:		// this is used during lengthy level loading, so pump message loop//		Com_EventLoop();	// FIXME: if a server restarts here, BAD THINGS HAPPEN!// We can't call Com_EventLoop here, a restart will crash and this _does_ happen// if there is a map change while we are downloading at pk3.// ZOID		SCR_UpdateScreen();		return 0;	case CG_CM_LOADMAP:		CL_CM_LoadMap( VMA(1) );		return 0;	case CG_CM_NUMINLINEMODELS:		return CM_NumInlineModels();	case CG_CM_INLINEMODEL:		return CM_InlineModel( args[1] );	case CG_CM_TEMPBOXMODEL:		return CM_TempBoxModel( VMA(1), VMA(2), /*int capsule*/ qfalse );	case CG_CM_TEMPCAPSULEMODEL:		return CM_TempBoxModel( VMA(1), VMA(2), /*int capsule*/ qtrue );	case CG_CM_POINTCONTENTS:		return CM_PointContents( VMA(1), args[2] );	case CG_CM_TRANSFORMEDPOINTCONTENTS:		return CM_TransformedPointContents( VMA(1), args[2], VMA(3), VMA(4) );	case CG_CM_BOXTRACE:		CM_BoxTrace( VMA(1), VMA(2), VMA(3), VMA(4), VMA(5), args[6], args[7], /*int capsule*/ qfalse );		return 0;	case CG_CM_CAPSULETRACE:		CM_BoxTrace( VMA(1), VMA(2), VMA(3), VMA(4), VMA(5), args[6], args[7], /*int capsule*/ qtrue );		return 0;	case CG_CM_TRANSFORMEDBOXTRACE:		CM_TransformedBoxTrace( VMA(1), VMA(2), VMA(3), VMA(4), VMA(5), args[6], args[7], VMA(8), VMA(9), /*int capsule*/ qfalse );		return 0;	case CG_CM_TRANSFORMEDCAPSULETRACE:		CM_TransformedBoxTrace( VMA(1), VMA(2), VMA(3), VMA(4), VMA(5), args[6], args[7], VMA(8), VMA(9), /*int capsule*/ qtrue );		return 0;	case CG_CM_MARKFRAGMENTS:		return re.MarkFragments( args[1], VMA(2), VMA(3), args[4], VMA(5), args[6], VMA(7) );	case CG_S_STARTSOUND://.........这里部分代码省略.........
开发者ID:BruceJohnJennerLawso,项目名称:quake3,代码行数:101,


示例22: CL_CgameSystemCalls

//.........这里部分代码省略.........			return 0;		case CG_UPDATESCREEN:			SCR_UpdateScreen();			return 0;		case CG_CM_LOADMAP:			CL_CM_LoadMap( VMA( 1 ) );			return 0;		case CG_CM_NUMINLINEMODELS:			return CM_NumInlineModels();		case CG_CM_INLINEMODEL:			return CM_InlineModel( args[ 1 ] );		case CG_CM_TEMPBOXMODEL:			return CM_TempBoxModel( VMA( 1 ), VMA( 2 ), qfalse );		case CG_CM_TEMPCAPSULEMODEL:			return CM_TempBoxModel( VMA( 1 ), VMA( 2 ), qtrue );		case CG_CM_POINTCONTENTS:			return CM_PointContents( VMA( 1 ), args[ 2 ] );		case CG_CM_TRANSFORMEDPOINTCONTENTS:			return CM_TransformedPointContents( VMA( 1 ), args[ 2 ], VMA( 3 ), VMA( 4 ) );		case CG_CM_BOXTRACE:			CM_BoxTrace( VMA( 1 ), VMA( 2 ), VMA( 3 ), VMA( 4 ), VMA( 5 ), args[ 6 ], args[ 7 ], TT_AABB );			return 0;		case CG_CM_TRANSFORMEDBOXTRACE:			CM_TransformedBoxTrace( VMA( 1 ), VMA( 2 ), VMA( 3 ), VMA( 4 ), VMA( 5 ), args[ 6 ], args[ 7 ], VMA( 8 ), VMA( 9 ), TT_AABB );			return 0;		case CG_CM_CAPSULETRACE:			CM_BoxTrace( VMA( 1 ), VMA( 2 ), VMA( 3 ), VMA( 4 ), VMA( 5 ), args[ 6 ], args[ 7 ], TT_CAPSULE );			return 0;		case CG_CM_TRANSFORMEDCAPSULETRACE:			CM_TransformedBoxTrace( VMA( 1 ), VMA( 2 ), VMA( 3 ), VMA( 4 ), VMA( 5 ), args[ 6 ], args[ 7 ], VMA( 8 ), VMA( 9 ), TT_CAPSULE );			return 0;		case CG_CM_BISPHERETRACE:			CM_BiSphereTrace( VMA( 1 ), VMA( 2 ), VMA( 3 ), VMF( 4 ), VMF( 5 ), args[ 6 ], args[ 7 ] );			return 0;		case CG_CM_TRANSFORMEDBISPHERETRACE:			CM_TransformedBiSphereTrace( VMA( 1 ), VMA( 2 ), VMA( 3 ), VMF( 4 ), VMF( 5 ), args[ 6 ], args[ 7 ], VMA( 8 ) );			return 0;		case CG_CM_MARKFRAGMENTS:			return re.MarkFragments( args[ 1 ], VMA( 2 ), VMA( 3 ), args[ 4 ], VMA( 5 ), args[ 6 ], VMA( 7 ) );		case CG_R_PROJECTDECAL:			re.ProjectDecal( args[ 1 ], args[ 2 ], VMA( 3 ), VMA( 4 ), VMA( 5 ), args[ 6 ], args[ 7 ] );			return 0;		case CG_R_CLEARDECALS:			re.ClearDecals();			return 0;		case CG_S_STARTSOUND:			S_StartSound( VMA( 1 ), args[ 2 ], args[ 3 ], args[ 4 ] );			return 0;
开发者ID:Sixthly,项目名称:Unvanquished,代码行数:67,


示例23: SV_ClipMoveToEntities

/*====================SV_ClipMoveToEntities====================*/static void SV_ClipMoveToEntities( moveclip_t *clip ) {	int			i, num;	int			touchlist[MAX_GENTITIES];	sharedEntity_t *touch;	int			passOwnerNum;	trace_t		trace;	clipHandle_t	clipHandle;	float		*origin, *angles;	num = SV_AreaEntities( clip->boxmins, clip->boxmaxs, touchlist, MAX_GENTITIES);	if ( clip->passEntityNum != ENTITYNUM_NONE ) {		passOwnerNum = ( SV_GentityNum( clip->passEntityNum ) )->r.ownerNum;		if ( passOwnerNum == ENTITYNUM_NONE ) {			passOwnerNum = -1;		}	} else {		passOwnerNum = -1;	}	for ( i=0 ; i<num ; i++ ) {		if ( clip->trace.allsolid ) {			return;		}		touch = SV_GentityNum( touchlist[i] );		// see if we should ignore this entity		if ( clip->passEntityNum != ENTITYNUM_NONE ) {			if ( touchlist[i] == clip->passEntityNum ) {				continue;	// don't clip against the pass entity			}			if ( !(touch->r.svFlags & SVF_OWNERNOTSHARED) && touch->r.ownerNum == clip->passEntityNum ) {				continue;	// don't clip against own missiles			}			if ( !(touch->r.svFlags & SVF_OWNERNOTSHARED) && touch->r.ownerNum == passOwnerNum ) {				continue;	// don't clip against other missiles from our owner			}		}		// if it doesn't have any brushes of a type we		// are looking for, ignore it		if ( ! ( clip->contentmask & touch->r.contents ) ) {			continue;		}		// might intersect, so do an exact clip		clipHandle = SV_ClipHandleForEntity (touch);		if ( clipHandle == 0 ) {			continue;		}		origin = touch->r.currentOrigin;		angles = touch->r.currentAngles;		if ( !touch->r.bmodel ) {			angles = vec3_origin;	// boxes don't rotate		}		CM_TransformedBoxTrace ( &trace, (float *)clip->start, (float *)clip->end,			(float *)clip->mins, (float *)clip->maxs, clipHandle,  clip->contentmask,			origin, angles, clip->capsule);		if ( trace.allsolid ) {			clip->trace.allsolid = qtrue;			trace.entityNum = touch->s.number;		} else if ( trace.startsolid ) {			clip->trace.startsolid = qtrue;			trace.entityNum = touch->s.number;		}		if ( trace.fraction < clip->trace.fraction ) {			qboolean	oldStart;			// make sure we keep a startsolid from a previous trace			oldStart = clip->trace.startsolid;			trace.entityNum = touch->s.number;			clip->trace = trace;			clip->trace.startsolid |= oldStart;		}	}}
开发者ID:Lrns123,项目名称:jkaq3,代码行数:90,


示例24: CL_CgameSystemCalls

//.........这里部分代码省略.........			cmg.landScapes[args[1]]->UpdatePatches();		}		*/ //this is SP.. I guess we're always the client and server.//		cl.mRMGChecksum = cm.landScapes[args[1]]->get_rand_seed();		RM_CreateRandomModels(args[1], (const char *)VMA(2));		//cmg.landScapes[args[1]]->rand_seed(cl.mRMGChecksum);		// restore it, in case we do a vid restart		cmg.landScape->rand_seed(cmg.landScape->get_rand_seed());//		TheRandomMissionManager->CreateMap();		return 0;	case CG_CM_REGISTER_TERRAIN:		return CM_RegisterTerrain((const char *)VMA(1), false)->GetTerrainId();	case CG_RE_INIT_RENDERER_TERRAIN:		re.InitRendererTerrain((const char *)VMA(1));		return 0;	case CG_CM_LOADMAP:		CL_CM_LoadMap( (const char *) VMA(1), args[2] );		return 0;	case CG_CM_NUMINLINEMODELS:		return CM_NumInlineModels();	case CG_CM_INLINEMODEL:		return CM_InlineModel( args[1] );	case CG_CM_TEMPBOXMODEL:		return CM_TempBoxModel( (const float *) VMA(1), (const float *) VMA(2) );//, (int) VMA(3) );	case CG_CM_POINTCONTENTS:		return CM_PointContents( (float *)VMA(1), args[2] );	case CG_CM_TRANSFORMEDPOINTCONTENTS:		return CM_TransformedPointContents( (const float *) VMA(1), args[2], (const float *) VMA(3), (const float *) VMA(4) );	case CG_CM_BOXTRACE:		CM_BoxTrace( (trace_t *) VMA(1), (const float *) VMA(2), (const float *) VMA(3), (const float *) VMA(4), (const float *) VMA(5), args[6], args[7] );		return 0;	case CG_CM_TRANSFORMEDBOXTRACE:		CM_TransformedBoxTrace( (trace_t *) VMA(1), (const float *) VMA(2), (const float *) VMA(3), (const float *) VMA(4), (const float *) VMA(5), args[6], args[7], (const float *) VMA(8), (const float *) VMA(9) );		return 0;	case CG_CM_MARKFRAGMENTS:		return re.MarkFragments( args[1], (float(*)[3]) VMA(2), (const float *) VMA(3), args[4], (float *) VMA(5), args[6], (markFragment_t *) VMA(7) );	case CG_CM_SNAPPVS:		CM_SnapPVS((float(*))VMA(1),(byte *) VMA(2));		return 0;	case CG_S_STOPSOUNDS:		S_StopSounds( );		return 0;	case CG_S_STARTSOUND:		// stops an ERR_DROP internally if called illegally from game side, but note that it also gets here 		//	legally during level start where normally the internal s_soundStarted check would return. So ok to hit this.		if (!cls.cgameStarted){			return 0;			}		S_StartSound( (float *) VMA(1), args[2], (soundChannel_t)args[3], args[4] );		return 0;	case CG_S_UPDATEAMBIENTSET:		// stops an ERR_DROP internally if called illegally from game side, but note that it also gets here 		//	legally during level start where normally the internal s_soundStarted check would return. So ok to hit this.		if (!cls.cgameStarted){			return 0;		}		S_UpdateAmbientSet( (const char *) VMA(1), (float *) VMA(2) );		return 0;	case CG_S_ADDLOCALSET:		return S_AddLocalSet( (const char *) VMA(1), (float *) VMA(2), (float *) VMA(3), args[4], args[5] );	case CG_AS_PARSESETS:		AS_ParseSets();		return 0;	case CG_AS_ADDENTRY:
开发者ID:Delfin1,项目名称:OpenJK,代码行数:67,


示例25: CL_GameModule_CM_TransformedBoxTrace

static inline void CL_GameModule_CM_TransformedBoxTrace( trace_t *tr, vec3_t start, vec3_t end, vec3_t mins, vec3_t maxs,	struct cmodel_s *cmodel, int brushmask, vec3_t origin, vec3_t angles ) {	CM_TransformedBoxTrace( cl.cms, tr, start, end, mins, maxs, cmodel, brushmask, origin, angles );}
开发者ID:tenght,项目名称:qfusion,代码行数:4,


示例26: CL_CgameSystemCalls

/*====================CL_CgameSystemCallsThe cgame module is making a system call====================*/intptr_t CL_CgameSystemCalls( intptr_t *args ) {	switch ( args[0] ) {	case CG_PRINT:		Com_Printf( "%s", (const char*)VMA(1) );		return 0;	case CG_ERROR:		Com_Error( ERR_DROP, "%s", (const char*)VMA(1) );		return 0;	case CG_MILLISECONDS:		return Sys_Milliseconds();	case CG_CVAR_REGISTER:		Cvar_Register( VMA( 1 ), VMA( 2 ), VMA( 3 ), args[4] );		return 0;	case CG_CVAR_UPDATE:		Cvar_Update( VMA( 1 ) );		return 0;	case CG_CVAR_SET:		Cvar_SetSafe( VMA(1), VMA(2) );		return 0;	case CG_CVAR_VARIABLESTRINGBUFFER:		Cvar_VariableStringBuffer( VMA( 1 ), VMA( 2 ), args[3] );		return 0;	case CG_ARGC:		return Cmd_Argc();	case CG_ARGV:		Cmd_ArgvBuffer( args[1], VMA( 2 ), args[3] );		return 0;	case CG_ARGS:		Cmd_ArgsBuffer( VMA( 1 ), args[2] );		return 0;	case CG_FS_FOPENFILE:		return FS_FOpenFileByMode( VMA( 1 ), VMA( 2 ), args[3] );	case CG_FS_READ:		FS_Read( VMA( 1 ), args[2], args[3] );		return 0;	case CG_FS_WRITE:		return FS_Write( VMA( 1 ), args[2], args[3] );	case CG_FS_FCLOSEFILE:		FS_FCloseFile( args[1] );		return 0;	case CG_SENDCONSOLECOMMAND:		Cbuf_AddText( VMA( 1 ) );		return 0;	case CG_ADDCOMMAND:		CL_AddCgameCommand( VMA( 1 ) );		return 0;	case CG_REMOVECOMMAND:		Cmd_RemoveCommandSafe( VMA(1) );		return 0;	case CG_SENDCLIENTCOMMAND:		CL_AddReliableCommand(VMA(1), qfalse);		return 0;	case CG_UPDATESCREEN:		// this is used during lengthy level loading, so pump message loop//		Com_EventLoop();	// FIXME: if a server restarts here, BAD THINGS HAPPEN!// We can't call Com_EventLoop here, a restart will crash and this _does_ happen// if there is a map change while we are downloading at pk3.// ZOID		SCR_UpdateScreen();		return 0;	case CG_CM_LOADMAP:		CL_CM_LoadMap( VMA( 1 ) );		return 0;	case CG_CM_NUMINLINEMODELS:		return CM_NumInlineModels();	case CG_CM_INLINEMODEL:		return CM_InlineModel( args[1] );	case CG_CM_TEMPBOXMODEL:		return CM_TempBoxModel( VMA( 1 ), VMA( 2 ), qfalse );	case CG_CM_TEMPCAPSULEMODEL:		return CM_TempBoxModel( VMA( 1 ), VMA( 2 ), qtrue );	case CG_CM_POINTCONTENTS:		return CM_PointContents( VMA( 1 ), args[2] );	case CG_CM_TRANSFORMEDPOINTCONTENTS:		return CM_TransformedPointContents( VMA( 1 ), args[2], VMA( 3 ), VMA( 4 ) );	case CG_CM_BOXTRACE:		CM_BoxTrace( VMA( 1 ), VMA( 2 ), VMA( 3 ), VMA( 4 ), VMA( 5 ), args[6], args[7], /*int capsule*/ qfalse );		return 0;	case CG_CM_TRANSFORMEDBOXTRACE:		CM_TransformedBoxTrace( VMA( 1 ), VMA( 2 ), VMA( 3 ), VMA( 4 ), VMA( 5 ), args[6], args[7], VMA( 8 ), VMA( 9 ), /*int capsule*/ qfalse );		return 0;	case CG_CM_CAPSULETRACE:		CM_BoxTrace( VMA( 1 ), VMA( 2 ), VMA( 3 ), VMA( 4 ), VMA( 5 ), args[6], args[7], /*int capsule*/ qtrue );		return 0;	case CG_CM_TRANSFORMEDCAPSULETRACE:		CM_TransformedBoxTrace( VMA( 1 ), VMA( 2 ), VMA( 3 ), VMA( 4 ), VMA( 5 ), args[6], args[7], VMA( 8 ), VMA( 9 ), /*int capsule*/ qtrue );		return 0;	case CG_CM_MARKFRAGMENTS:		return re.MarkFragments( args[1], VMA( 2 ), VMA( 3 ), args[4], VMA( 5 ), args[6], VMA( 7 ) );	case CG_S_STARTSOUND:		S_StartSound( VMA( 1 ), args[2], args[3], args[4] );		return 0;//----(SA)	added//.........这里部分代码省略.........
开发者ID:MAN-AT-ARMS,项目名称:iortcw-archive,代码行数:101,



注:本文中的CM_TransformedBoxTrace函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ CM_TransformedPointContents函数代码示例
C++ CM_TempBoxModel函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。