From: uis Date: Sat, 4 May 2024 21:10:16 +0000 (+0300) Subject: Remove quake2-exclusive mathlib X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=f1810be5e434b012e82d225e8a3e7036fc37a4ca;p=xonotic%2Fnetradiant.git Remove quake2-exclusive mathlib But I kept quake2-exclusive PlaneTypeForNormal and PlaneFromPoints --- diff --git a/tools/quake2/CMakeLists.txt b/tools/quake2/CMakeLists.txt index b36be1ae..579e0f40 100644 --- a/tools/quake2/CMakeLists.txt +++ b/tools/quake2/CMakeLists.txt @@ -11,7 +11,6 @@ radiant_tool(q2map common/inout.c common/inout.h common/l3dslib.c common/l3dslib.h common/lbmlib.c common/lbmlib.h - common/mathlib.c common/mathlib.h common/md4.c common/md4.h common/path_init.c common/qfiles.h @@ -53,6 +52,7 @@ target_compile_definitions(q2map target_link_libraries(q2map ${LIBXML2_LIBRARIES} l_net + mathlib ) radiant_tool(qdata3 @@ -63,7 +63,6 @@ radiant_tool(qdata3 common/inout.c common/inout.h common/l3dslib.c common/l3dslib.h common/lbmlib.c common/lbmlib.h - common/mathlib.c common/mathlib.h common/md4.c common/md4.h common/path_init.c common/qfiles.h @@ -88,6 +87,7 @@ target_compile_definitions(qdata3 target_link_libraries(qdata3 ${LIBXML2_LIBRARIES} l_net + mathlib ) add_custom_target(quake2) diff --git a/tools/quake2/common/mathlib.c b/tools/quake2/common/mathlib.c deleted file mode 100644 index 25d5f828..00000000 --- a/tools/quake2/common/mathlib.c +++ /dev/null @@ -1,162 +0,0 @@ -/* - Copyright (C) 1999-2007 id Software, Inc. and contributors. - For a list of contributors, see the accompanying CONTRIBUTORS file. - - This file is part of GtkRadiant. - - GtkRadiant is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - GtkRadiant is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GtkRadiant; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -// mathlib.c -- math primitives - -#include "cmdlib.h" -#include "mathlib.h" - -vec3_t vec3_origin = {0,0,0}; - - -double VectorLength( vec3_t v ){ - int i; - double length; - - length = 0; - for ( i = 0 ; i < 3 ; i++ ) - length += v[i] * v[i]; - length = sqrt( length ); // FIXME - - return length; -} - -qboolean VectorCompare( vec3_t v1, vec3_t v2 ){ - int i; - - for ( i = 0 ; i < 3 ; i++ ) - if ( fabs( v1[i] - v2[i] ) > EQUAL_EPSILON ) { - return false; - } - - return true; -} - -vec_t Q_rint( vec_t in ){ - return floor( in + 0.5 ); -} - -void VectorMA( vec3_t va, double scale, vec3_t vb, vec3_t vc ){ - vc[0] = va[0] + scale * vb[0]; - vc[1] = va[1] + scale * vb[1]; - vc[2] = va[2] + scale * vb[2]; -} - -void CrossProduct( vec3_t v1, vec3_t v2, vec3_t cross ){ - cross[0] = v1[1] * v2[2] - v1[2] * v2[1]; - cross[1] = v1[2] * v2[0] - v1[0] * v2[2]; - cross[2] = v1[0] * v2[1] - v1[1] * v2[0]; -} - -vec_t _DotProduct( vec3_t v1, vec3_t v2 ){ - return v1[0] * v2[0] + v1[1] * v2[1] + v1[2] * v2[2]; -} - -void _VectorSubtract( vec3_t va, vec3_t vb, vec3_t out ){ - out[0] = va[0] - vb[0]; - out[1] = va[1] - vb[1]; - out[2] = va[2] - vb[2]; -} - -void _VectorAdd( vec3_t va, vec3_t vb, vec3_t out ){ - out[0] = va[0] + vb[0]; - out[1] = va[1] + vb[1]; - out[2] = va[2] + vb[2]; -} - -void _VectorCopy( vec3_t in, vec3_t out ){ - out[0] = in[0]; - out[1] = in[1]; - out[2] = in[2]; -} - -void _VectorScale( vec3_t v, vec_t scale, vec3_t out ){ - out[0] = v[0] * scale; - out[1] = v[1] * scale; - out[2] = v[2] * scale; -} - -vec_t VectorNormalize( vec3_t in, vec3_t out ){ - vec_t length, ilength; - - length = sqrt( in[0] * in[0] + in[1] * in[1] + in[2] * in[2] ); - if ( length == 0 ) { - VectorClear( out ); - return 0; - } - - ilength = 1.0 / length; - out[0] = in[0] * ilength; - out[1] = in[1] * ilength; - out[2] = in[2] * ilength; - - return length; -} - -vec_t ColorNormalize( vec3_t in, vec3_t out ){ - float max, scale; - - max = in[0]; - if ( in[1] > max ) { - max = in[1]; - } - if ( in[2] > max ) { - max = in[2]; - } - - if ( max == 0 ) { - return 0; - } - - scale = 1.0 / max; - - VectorScale( in, scale, out ); - - return max; -} - - - -void VectorInverse( vec3_t v ){ - v[0] = -v[0]; - v[1] = -v[1]; - v[2] = -v[2]; -} - -void ClearBounds( vec3_t mins, vec3_t maxs ){ - mins[0] = mins[1] = mins[2] = 99999; - maxs[0] = maxs[1] = maxs[2] = -99999; -} - -void AddPointToBounds( vec3_t v, vec3_t mins, vec3_t maxs ){ - int i; - vec_t val; - - for ( i = 0 ; i < 3 ; i++ ) - { - val = v[i]; - if ( val < mins[i] ) { - mins[i] = val; - } - if ( val > maxs[i] ) { - maxs[i] = val; - } - } -} diff --git a/tools/quake2/common/mathlib.h b/tools/quake2/common/mathlib.h deleted file mode 100644 index 1999b71f..00000000 --- a/tools/quake2/common/mathlib.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - Copyright (C) 1999-2007 id Software, Inc. and contributors. - For a list of contributors, see the accompanying CONTRIBUTORS file. - - This file is part of GtkRadiant. - - GtkRadiant is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - GtkRadiant is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GtkRadiant; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -#ifndef __MATHLIB__ -#define __MATHLIB__ - -// mathlib.h - -#include - -#ifdef DOUBLEVEC_T -typedef double vec_t; -#else -typedef float vec_t; -#endif -typedef vec_t vec3_t[3]; - -#define SIDE_FRONT 0 -#define SIDE_ON 2 -#define SIDE_BACK 1 -#define SIDE_CROSS -2 - -#define Q_PI 3.14159265358979323846 - -extern vec3_t vec3_origin; - -#define EQUAL_EPSILON 0.001 - -qboolean VectorCompare( vec3_t v1, vec3_t v2 ); - -#define DotProduct( x,y ) ( x[0] * y[0] + x[1] * y[1] + x[2] * y[2] ) -#define VectorSubtract( a,b,c ) {c[0] = a[0] - b[0]; c[1] = a[1] - b[1]; c[2] = a[2] - b[2]; } -#define VectorAdd( a,b,c ) {c[0] = a[0] + b[0]; c[1] = a[1] + b[1]; c[2] = a[2] + b[2]; } -#define VectorCopy( a,b ) {b[0] = a[0]; b[1] = a[1]; b[2] = a[2]; } -#define VectorScale( a,b,c ) {c[0] = b * a[0]; c[1] = b * a[1]; c[2] = b * a[2]; } -#define VectorClear( x ) {x[0] = x[1] = x[2] = 0; } -#define VectorNegate( x ) {x[0] = -x[0]; x[1] = -x[1]; x[2] = -x[2]; } - -vec_t Q_rint( vec_t in ); -vec_t _DotProduct( vec3_t v1, vec3_t v2 ); -void _VectorSubtract( vec3_t va, vec3_t vb, vec3_t out ); -void _VectorAdd( vec3_t va, vec3_t vb, vec3_t out ); -void _VectorCopy( vec3_t in, vec3_t out ); -void _VectorScale( vec3_t v, vec_t scale, vec3_t out ); - -double VectorLength( vec3_t v ); - -void VectorMA( vec3_t va, double scale, vec3_t vb, vec3_t vc ); - -void CrossProduct( vec3_t v1, vec3_t v2, vec3_t cross ); -vec_t VectorNormalize( vec3_t in, vec3_t out ); -vec_t ColorNormalize( vec3_t in, vec3_t out ); -void VectorInverse( vec3_t v ); - -void ClearBounds( vec3_t mins, vec3_t maxs ); -void AddPointToBounds( vec3_t v, vec3_t mins, vec3_t maxs ); - -#endif diff --git a/tools/quake2/q2map/map.c b/tools/quake2/q2map/map.c index f812393e..81d0c642 100644 --- a/tools/quake2/q2map/map.c +++ b/tools/quake2/q2map/map.c @@ -65,7 +65,7 @@ int c_clipbrushes; PlaneTypeForNormal ================= */ -int PlaneTypeForNormal( vec3_t normal ){ +int PlaneTypeForNormalQ2( vec3_t normal ){ vec_t ax, ay, az; // NOTE: should these have an epsilon around 1.0? @@ -153,7 +153,7 @@ int CreateNewFloatPlane( vec3_t normal, vec_t dist ){ p = &mapplanes[nummapplanes]; VectorCopy( normal, p->normal ); p->dist = dist; - p->type = ( p + 1 )->type = PlaneTypeForNormal( p->normal ); + p->type = ( p + 1 )->type = PlaneTypeForNormalQ2( p->normal ); VectorSubtract( vec3_origin, normal, ( p + 1 )->normal ); ( p + 1 )->dist = -dist; @@ -267,7 +267,7 @@ int FindFloatPlane( vec3_t normal, vec_t dist ){ PlaneFromPoints ================ */ -int PlaneFromPoints( int *p0, int *p1, int *p2 ){ +int PlaneFromPointsI( int *p0, int *p1, int *p2 ){ vec3_t t1, t2, normal; vec_t dist; @@ -663,7 +663,7 @@ void ParseBrush( entity_t *mapent ){ // // find the plane number // - planenum = PlaneFromPoints( planepts[0], planepts[1], planepts[2] ); + planenum = PlaneFromPointsI( planepts[0], planepts[1], planepts[2] ); if ( planenum == -1 ) { Sys_Printf( "Entity %i, Brush %i: plane with no normal\n" , b->entitynum, b->brushnum ); diff --git a/tools/quake2/q2map/writebsp.c b/tools/quake2/q2map/writebsp.c index c116b20f..c918ad0a 100644 --- a/tools/quake2/q2map/writebsp.c +++ b/tools/quake2/q2map/writebsp.c @@ -129,8 +129,8 @@ void EmitLeaf( node_t *node ){ // // write bounding box info // - VectorCopy( (short) node->mins, leaf_p->mins ); - VectorCopy( (short) node->maxs, leaf_p->maxs ); + VectorCopy( node->mins, leaf_p->mins ); + VectorCopy( node->maxs, leaf_p->maxs ); // // write the leafbrushes @@ -247,8 +247,8 @@ int EmitDrawNode_r( node_t *node ){ n = &dnodes[numnodes]; numnodes++; - VectorCopy( (short) node->mins, n->mins ); - VectorCopy( (short) node->maxs, n->maxs ); + VectorCopy( node->mins, n->mins ); + VectorCopy( node->maxs, n->maxs ); planeused[node->planenum]++; planeused[node->planenum ^ 1]++;