コード例 #1
0
ファイル: bot.c プロジェクト: icanhas/yantar
/*
 * BotImport_DebugLineShow
 */
static void
BotImport_DebugLineShow(int line, Vec3 start, Vec3 end, int color)
{
	Vec3	points[4], dir, cross, up = {0, 0, 1};
	float	dot;

	copyv3(start, points[0]);
	copyv3(start, points[1]);
	/* points[1][2] -= 2; */
	copyv3(end, points[2]);
	/* points[2][2] -= 2; */
	copyv3(end, points[3]);


	subv3(end, start, dir);
	normv3(dir);
	dot = dotv3(dir, up);
	if(dot > 0.99 || dot < -0.99) setv3(cross, 1, 0, 0);
	else crossv3(dir, up, cross);

	normv3(cross);

	saddv3(points[0], 2, cross, points[0]);
	saddv3(points[1], -2, cross, points[1]);
	saddv3(points[2], -2, cross, points[2]);
	saddv3(points[3], 2, cross, points[3]);

	BotImport_DebugPolygonShow(line, color, 4, points);
}
コード例 #2
0
ファイル: sv_bot.c プロジェクト: baseas/aftershock
/*
==================
BotImport_DebugLineShow
==================
*/
static void BotImport_DebugLineShow(int line, vec3_t start, vec3_t end, int color) {
	vec3_t points[4], dir, cross, up = {0, 0, 1};
	float dot;

	VectorCopy(start, points[0]);
	VectorCopy(start, points[1]);
	//points[1][2] -= 2;
	VectorCopy(end, points[2]);
	//points[2][2] -= 2;
	VectorCopy(end, points[3]);


	VectorSubtract(end, start, dir);
	VectorNormalize(dir);
	dot = DotProduct(dir, up);
	if (dot > 0.99 || dot < -0.99) VectorSet(cross, 1, 0, 0);
	else CrossProduct(dir, up, cross);

	VectorNormalize(cross);

	VectorMA(points[0], 2, cross, points[0]);
	VectorMA(points[1], -2, cross, points[1]);
	VectorMA(points[2], -2, cross, points[2]);
	VectorMA(points[3], 2, cross, points[3]);

	BotImport_DebugPolygonShow(line, color, 4, points);
}
コード例 #3
0
ファイル: sv_bot.cpp プロジェクト: Jsoucek/q3ce
/*
==================
BotImport_DebugLineShow
==================
*/
void BotImport_DebugLineShow(int line, bvec3_t start, bvec3_t end, int color) {
	bvec3_t points[4], tmp;
	avec3_t dir, cross, up = {AFIXED_0, AFIXED_0, AFIXED_1};
	afixed dot;

	VectorCopy(start, points[0]);
	VectorCopy(start, points[1]);
	//points[1][2] -= 2;
	VectorCopy(end, points[2]);
	//points[2][2] -= 2;
	VectorCopy(end, points[3]);


	VectorSubtract(end, start, tmp);
	VectorNormalizeB2A(tmp, dir);
	dot = FIXED_VEC3DOT(dir, up);
	if (dot > AFIXED(0,99) || dot < -AFIXED(0,99)) VectorSet(cross, AFIXED_1, AFIXED_0, AFIXED_0);
	else CrossProduct(dir, up, cross);

	VectorNormalize(cross);

	FIXED_VEC3MA_R(points[0], BFIXED(2,0), cross, points[0]);
	FIXED_VEC3MA_R(points[1], -BFIXED(2,0), cross, points[1]);
	FIXED_VEC3MA_R(points[2], -BFIXED(2,0), cross, points[2]);
	FIXED_VEC3MA_R(points[3], BFIXED(2,0), cross, points[3]);

	BotImport_DebugPolygonShow(line, color, 4, points);
}