mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2024-11-23 04:42:32 +00:00
Remove some redundant files.
Use the functions provided by QuakeForge.
This commit is contained in:
parent
e84574400d
commit
e93bb3fb69
4 changed files with 0 additions and 797 deletions
|
@ -1,611 +0,0 @@
|
||||||
// cmdlib.c
|
|
||||||
|
|
||||||
#include "cmdlib.h"
|
|
||||||
|
|
||||||
#define PATHSEPERATOR '/'
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
================
|
|
||||||
I_FloatTime
|
|
||||||
================
|
|
||||||
*/
|
|
||||||
double I_FloatTime (void)
|
|
||||||
{
|
|
||||||
struct timeval tp;
|
|
||||||
struct timezone tzp;
|
|
||||||
static int secbase;
|
|
||||||
|
|
||||||
gettimeofday(&tp, &tzp);
|
|
||||||
|
|
||||||
if (!secbase)
|
|
||||||
{
|
|
||||||
secbase = tp.tv_sec;
|
|
||||||
return tp.tv_usec/1000000.0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (tp.tv_sec - secbase) + tp.tv_usec/1000000.0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
char com_token[1024];
|
|
||||||
boolean com_eof;
|
|
||||||
|
|
||||||
/*
|
|
||||||
==============
|
|
||||||
COM_Parse
|
|
||||||
|
|
||||||
Parse a token out of a string
|
|
||||||
==============
|
|
||||||
*/
|
|
||||||
char *COM_Parse (char *data)
|
|
||||||
{
|
|
||||||
int c;
|
|
||||||
int len;
|
|
||||||
|
|
||||||
com_eof = false;
|
|
||||||
|
|
||||||
len = 0;
|
|
||||||
com_token[0] = 0;
|
|
||||||
|
|
||||||
if (!data)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
// skip whitespace
|
|
||||||
skipwhite:
|
|
||||||
while ( (c = *data) <= ' ')
|
|
||||||
{
|
|
||||||
if (c == 0)
|
|
||||||
{
|
|
||||||
com_eof = true;
|
|
||||||
return NULL; // end of file;
|
|
||||||
}
|
|
||||||
data++;
|
|
||||||
}
|
|
||||||
|
|
||||||
// skip // comments
|
|
||||||
if (c=='/' && data[1] == '/')
|
|
||||||
{
|
|
||||||
while (*data && *data != '\n')
|
|
||||||
data++;
|
|
||||||
goto skipwhite;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// handle quoted strings specially
|
|
||||||
if (c == '\"')
|
|
||||||
{
|
|
||||||
data++;
|
|
||||||
do
|
|
||||||
{
|
|
||||||
c = *data++;
|
|
||||||
if (c=='\"')
|
|
||||||
{
|
|
||||||
com_token[len] = 0;
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
com_token[len] = c;
|
|
||||||
len++;
|
|
||||||
} while (1);
|
|
||||||
}
|
|
||||||
|
|
||||||
// parse single characters
|
|
||||||
if (c=='{' || c=='}'|| c==')'|| c=='(' || c=='\'' || c==':')
|
|
||||||
{
|
|
||||||
com_token[len] = c;
|
|
||||||
len++;
|
|
||||||
com_token[len] = 0;
|
|
||||||
return data+1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// parse a regular word
|
|
||||||
do
|
|
||||||
{
|
|
||||||
com_token[len] = c;
|
|
||||||
data++;
|
|
||||||
len++;
|
|
||||||
c = *data;
|
|
||||||
if (c=='{' || c=='}'|| c==')'|| c=='(' || c=='\'' || c==':')
|
|
||||||
break;
|
|
||||||
} while (c>32);
|
|
||||||
|
|
||||||
com_token[len] = 0;
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
================
|
|
||||||
=
|
|
||||||
= filelength
|
|
||||||
=
|
|
||||||
================
|
|
||||||
*/
|
|
||||||
|
|
||||||
int filelength (int handle)
|
|
||||||
{
|
|
||||||
struct stat fileinfo;
|
|
||||||
|
|
||||||
if (fstat (handle,&fileinfo) == -1)
|
|
||||||
{
|
|
||||||
fprintf (stderr,"Error fstating");
|
|
||||||
exit (1);
|
|
||||||
}
|
|
||||||
|
|
||||||
return fileinfo.st_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
int tell (int handle)
|
|
||||||
{
|
|
||||||
return lseek (handle, 0, L_INCR);
|
|
||||||
}
|
|
||||||
|
|
||||||
char *strupr (char *start)
|
|
||||||
{
|
|
||||||
char *in;
|
|
||||||
in = start;
|
|
||||||
while (*in)
|
|
||||||
{
|
|
||||||
*in = toupper(*in);
|
|
||||||
in++;
|
|
||||||
}
|
|
||||||
return start;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *strlower (char *start)
|
|
||||||
{
|
|
||||||
char *in;
|
|
||||||
in = start;
|
|
||||||
while (*in)
|
|
||||||
{
|
|
||||||
*in = tolower(*in);
|
|
||||||
in++;
|
|
||||||
}
|
|
||||||
return start;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *getcwd (char *path, int length)
|
|
||||||
{
|
|
||||||
return getwd(path);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* globals for command line args */
|
|
||||||
extern int NXArgc;
|
|
||||||
extern char **NXArgv;
|
|
||||||
#define myargc NXArgc
|
|
||||||
#define myargv NXArgv
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
=============================================================================
|
|
||||||
|
|
||||||
MISC FUNCTIONS
|
|
||||||
|
|
||||||
=============================================================================
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
=================
|
|
||||||
=
|
|
||||||
= CheckParm
|
|
||||||
=
|
|
||||||
= Checks for the given parameter in the program's command line arguments
|
|
||||||
=
|
|
||||||
= Returns the argument number (1 to argc-1) or 0 if not present
|
|
||||||
=
|
|
||||||
=================
|
|
||||||
*/
|
|
||||||
|
|
||||||
int CheckParm (char *check)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 1;i<myargc;i++)
|
|
||||||
{
|
|
||||||
if ( !stricmp(check, myargv[i]) )
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int SafeOpenWrite (char *filename)
|
|
||||||
{
|
|
||||||
int handle;
|
|
||||||
|
|
||||||
umask (0);
|
|
||||||
|
|
||||||
handle = open(filename,O_RDWR | O_CREAT | O_TRUNC
|
|
||||||
, 0666);
|
|
||||||
|
|
||||||
if (handle == -1)
|
|
||||||
Error ("Error opening %s: %s",filename,strerror(errno));
|
|
||||||
|
|
||||||
return handle;
|
|
||||||
}
|
|
||||||
|
|
||||||
int SafeOpenRead (char *filename)
|
|
||||||
{
|
|
||||||
int handle;
|
|
||||||
|
|
||||||
handle = open(filename,O_RDONLY);
|
|
||||||
|
|
||||||
if (handle == -1)
|
|
||||||
Error ("Error opening %s: %s",filename,strerror(errno));
|
|
||||||
|
|
||||||
return handle;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void SafeRead (int handle, void *buffer, long count)
|
|
||||||
{
|
|
||||||
int iocount;
|
|
||||||
|
|
||||||
iocount = read (handle,buffer,count);
|
|
||||||
if (iocount != count)
|
|
||||||
Error ("File read failure");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void SafeWrite (int handle, void *buffer, long count)
|
|
||||||
{
|
|
||||||
int iocount;
|
|
||||||
|
|
||||||
iocount = write (handle,buffer,count);
|
|
||||||
if (iocount != count)
|
|
||||||
Error ("File write failure");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void *SafeMalloc (long size)
|
|
||||||
{
|
|
||||||
void *ptr;
|
|
||||||
|
|
||||||
ptr = malloc (size);
|
|
||||||
|
|
||||||
if (!ptr)
|
|
||||||
Error ("Malloc failure for %lu bytes",size);
|
|
||||||
|
|
||||||
return ptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
==============
|
|
||||||
=
|
|
||||||
= LoadFile
|
|
||||||
=
|
|
||||||
= appends a 0 byte
|
|
||||||
==============
|
|
||||||
*/
|
|
||||||
|
|
||||||
long LoadFile (char *filename, void **bufferptr)
|
|
||||||
{
|
|
||||||
int handle;
|
|
||||||
long length;
|
|
||||||
void *buffer;
|
|
||||||
|
|
||||||
handle = SafeOpenRead (filename);
|
|
||||||
length = filelength (handle);
|
|
||||||
buffer = SafeMalloc (length+1);
|
|
||||||
((char *)buffer)[length] = 0;
|
|
||||||
SafeRead (handle, buffer, length);
|
|
||||||
close (handle);
|
|
||||||
|
|
||||||
*bufferptr = buffer;
|
|
||||||
return length;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
==============
|
|
||||||
=
|
|
||||||
= SaveFile
|
|
||||||
=
|
|
||||||
==============
|
|
||||||
*/
|
|
||||||
|
|
||||||
void SaveFile (char *filename, void *buffer, long count)
|
|
||||||
{
|
|
||||||
int handle;
|
|
||||||
|
|
||||||
handle = SafeOpenWrite (filename);
|
|
||||||
SafeWrite (handle, buffer, count);
|
|
||||||
close (handle);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void DefaultExtension (char *path, char *extension)
|
|
||||||
{
|
|
||||||
char *src;
|
|
||||||
//
|
|
||||||
// if path doesn't have a .EXT, append extension
|
|
||||||
// (extension should include the .)
|
|
||||||
//
|
|
||||||
src = path + strlen(path) - 1;
|
|
||||||
|
|
||||||
while (*src != PATHSEPERATOR && src != path)
|
|
||||||
{
|
|
||||||
if (*src == '.')
|
|
||||||
return; // it has an extension
|
|
||||||
src--;
|
|
||||||
}
|
|
||||||
|
|
||||||
strcat (path, extension);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void DefaultPath (char *path, char *basepath)
|
|
||||||
{
|
|
||||||
char temp[128];
|
|
||||||
|
|
||||||
if (path[0] == PATHSEPERATOR)
|
|
||||||
return; // absolute path location
|
|
||||||
strcpy (temp,path);
|
|
||||||
strcpy (path,basepath);
|
|
||||||
strcat (path,temp);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void StripFilename (char *path)
|
|
||||||
{
|
|
||||||
int length;
|
|
||||||
|
|
||||||
length = strlen(path)-1;
|
|
||||||
while (length > 0 && path[length] != PATHSEPERATOR)
|
|
||||||
length--;
|
|
||||||
path[length] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void StripExtension (char *path)
|
|
||||||
{
|
|
||||||
int length;
|
|
||||||
|
|
||||||
length = strlen(path)-1;
|
|
||||||
while (length > 0 && path[length] != '.')
|
|
||||||
length--;
|
|
||||||
if (length)
|
|
||||||
path[length] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
====================
|
|
||||||
=
|
|
||||||
= Extract file parts
|
|
||||||
=
|
|
||||||
====================
|
|
||||||
*/
|
|
||||||
|
|
||||||
void ExtractFilePath (char *path, char *dest)
|
|
||||||
{
|
|
||||||
char *src;
|
|
||||||
|
|
||||||
src = path + strlen(path) - 1;
|
|
||||||
|
|
||||||
//
|
|
||||||
// back up until a \ or the start
|
|
||||||
//
|
|
||||||
while (src != path && *(src-1) != PATHSEPERATOR)
|
|
||||||
src--;
|
|
||||||
|
|
||||||
memcpy (dest, path, src-path);
|
|
||||||
dest[src-path] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ExtractFileBase (char *path, char *dest)
|
|
||||||
{
|
|
||||||
char *src;
|
|
||||||
|
|
||||||
src = path + strlen(path) - 1;
|
|
||||||
|
|
||||||
//
|
|
||||||
// back up until a \ or the start
|
|
||||||
//
|
|
||||||
while (src != path && *(src-1) != PATHSEPERATOR)
|
|
||||||
src--;
|
|
||||||
|
|
||||||
while (*src && *src != '.')
|
|
||||||
{
|
|
||||||
*dest++ = *src++;
|
|
||||||
}
|
|
||||||
*dest = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ExtractFileExtension (char *path, char *dest)
|
|
||||||
{
|
|
||||||
char *src;
|
|
||||||
|
|
||||||
src = path + strlen(path) - 1;
|
|
||||||
|
|
||||||
//
|
|
||||||
// back up until a . or the start
|
|
||||||
//
|
|
||||||
while (src != path && *(src-1) != '.')
|
|
||||||
src--;
|
|
||||||
if (src == path)
|
|
||||||
{
|
|
||||||
*dest = 0; // no extension
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
strcpy (dest,src);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
==============
|
|
||||||
=
|
|
||||||
= ParseNum / ParseHex
|
|
||||||
=
|
|
||||||
==============
|
|
||||||
*/
|
|
||||||
|
|
||||||
long ParseHex (char *hex)
|
|
||||||
{
|
|
||||||
char *str;
|
|
||||||
long num;
|
|
||||||
|
|
||||||
num = 0;
|
|
||||||
str = hex;
|
|
||||||
|
|
||||||
while (*str)
|
|
||||||
{
|
|
||||||
num <<= 4;
|
|
||||||
if (*str >= '0' && *str <= '9')
|
|
||||||
num += *str-'0';
|
|
||||||
else if (*str >= 'a' && *str <= 'f')
|
|
||||||
num += 10 + *str-'a';
|
|
||||||
else if (*str >= 'A' && *str <= 'F')
|
|
||||||
num += 10 + *str-'A';
|
|
||||||
else
|
|
||||||
Error ("Bad hex number: %s",hex);
|
|
||||||
str++;
|
|
||||||
}
|
|
||||||
|
|
||||||
return num;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
long ParseNum (char *str)
|
|
||||||
{
|
|
||||||
if (str[0] == '$')
|
|
||||||
return ParseHex (str+1);
|
|
||||||
if (str[0] == '0' && str[1] == 'x')
|
|
||||||
return ParseHex (str+2);
|
|
||||||
return atol (str);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int GetKey (void)
|
|
||||||
{
|
|
||||||
return getchar ();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
============================================================================
|
|
||||||
|
|
||||||
BYTE ORDER FUNCTIONS
|
|
||||||
|
|
||||||
============================================================================
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef __BIG_ENDIAN__
|
|
||||||
|
|
||||||
short LittleShort (short l)
|
|
||||||
{
|
|
||||||
byte b1,b2;
|
|
||||||
|
|
||||||
b1 = l&255;
|
|
||||||
b2 = (l>>8)&255;
|
|
||||||
|
|
||||||
return (b1<<8) + b2;
|
|
||||||
}
|
|
||||||
|
|
||||||
short BigShort (short l)
|
|
||||||
{
|
|
||||||
return l;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
long LittleLong (long l)
|
|
||||||
{
|
|
||||||
byte b1,b2,b3,b4;
|
|
||||||
|
|
||||||
b1 = l&255;
|
|
||||||
b2 = (l>>8)&255;
|
|
||||||
b3 = (l>>16)&255;
|
|
||||||
b4 = (l>>24)&255;
|
|
||||||
|
|
||||||
return ((long)b1<<24) + ((long)b2<<16) + ((long)b3<<8) + b4;
|
|
||||||
}
|
|
||||||
|
|
||||||
long BigLong (long l)
|
|
||||||
{
|
|
||||||
return l;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
float LittleFloat (float l)
|
|
||||||
{
|
|
||||||
union {byte b[4]; float f;} in, out;
|
|
||||||
|
|
||||||
in.f = l;
|
|
||||||
out.b[0] = in.b[3];
|
|
||||||
out.b[1] = in.b[2];
|
|
||||||
out.b[2] = in.b[1];
|
|
||||||
out.b[3] = in.b[0];
|
|
||||||
|
|
||||||
return out.f;
|
|
||||||
}
|
|
||||||
|
|
||||||
float BigFloat (float l)
|
|
||||||
{
|
|
||||||
return l;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
|
|
||||||
short BigShort (short l)
|
|
||||||
{
|
|
||||||
byte b1,b2;
|
|
||||||
|
|
||||||
b1 = l&255;
|
|
||||||
b2 = (l>>8)&255;
|
|
||||||
|
|
||||||
return (b1<<8) + b2;
|
|
||||||
}
|
|
||||||
|
|
||||||
short LittleShort (short l)
|
|
||||||
{
|
|
||||||
return l;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
long BigLong (long l)
|
|
||||||
{
|
|
||||||
byte b1,b2,b3,b4;
|
|
||||||
|
|
||||||
b1 = l&255;
|
|
||||||
b2 = (l>>8)&255;
|
|
||||||
b3 = (l>>16)&255;
|
|
||||||
b4 = (l>>24)&255;
|
|
||||||
|
|
||||||
return ((long)b1<<24) + ((long)b2<<16) + ((long)b3<<8) + b4;
|
|
||||||
}
|
|
||||||
|
|
||||||
long LittleLong (long l)
|
|
||||||
{
|
|
||||||
return l;
|
|
||||||
}
|
|
||||||
|
|
||||||
float BigFloat (float l)
|
|
||||||
{
|
|
||||||
union {byte b[4]; float f;} in, out;
|
|
||||||
|
|
||||||
in.f = l;
|
|
||||||
out.b[0] = in.b[3];
|
|
||||||
out.b[1] = in.b[2];
|
|
||||||
out.b[2] = in.b[1];
|
|
||||||
out.b[3] = in.b[0];
|
|
||||||
|
|
||||||
return out.f;
|
|
||||||
}
|
|
||||||
|
|
||||||
float LittleFloat (float l)
|
|
||||||
{
|
|
||||||
return l;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
|
@ -1,62 +0,0 @@
|
||||||
// cmdlib.h
|
|
||||||
|
|
||||||
#ifndef __CMDLIB__
|
|
||||||
#define __CMDLIB__
|
|
||||||
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <ctype.h>
|
|
||||||
|
|
||||||
#define strcmpi strcasecmp
|
|
||||||
#define stricmp strcasecmp
|
|
||||||
char *strupr (char *in);
|
|
||||||
char *strlower (char *in);
|
|
||||||
int filelength (int handle);
|
|
||||||
int tell (int handle);
|
|
||||||
|
|
||||||
#ifndef __BYTEBOOL__
|
|
||||||
#define __BYTEBOOL__
|
|
||||||
typedef enum { false, true } boolean;
|
|
||||||
typedef unsigned char byte;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
double I_FloatTime (void);
|
|
||||||
|
|
||||||
int GetKey (void);
|
|
||||||
|
|
||||||
void Error (char *error, ...);
|
|
||||||
int CheckParm (char *check);
|
|
||||||
|
|
||||||
int SafeOpenWrite (char *filename);
|
|
||||||
int SafeOpenRead (char *filename);
|
|
||||||
void SafeRead (int handle, void *buffer, long count);
|
|
||||||
void SafeWrite (int handle, void *buffer, long count);
|
|
||||||
void *SafeMalloc (long size);
|
|
||||||
|
|
||||||
long LoadFile (char *filename, void **bufferptr);
|
|
||||||
void SaveFile (char *filename, void *buffer, long count);
|
|
||||||
|
|
||||||
void DefaultExtension (char *path, char *extension);
|
|
||||||
void DefaultPath (char *path, char *basepath);
|
|
||||||
void StripFilename (char *path);
|
|
||||||
void StripExtension (char *path);
|
|
||||||
|
|
||||||
void ExtractFilePath (char *path, char *dest);
|
|
||||||
void ExtractFileBase (char *path, char *dest);
|
|
||||||
void ExtractFileExtension (char *path, char *dest);
|
|
||||||
|
|
||||||
long ParseNum (char *str);
|
|
||||||
|
|
||||||
short BigShort (short l);
|
|
||||||
short LittleShort (short l);
|
|
||||||
long BigLong (long l);
|
|
||||||
long LittleLong (long l);
|
|
||||||
float BigFloat (float l);
|
|
||||||
float LittleFloat (float l);
|
|
||||||
|
|
||||||
extern char com_token[1024];
|
|
||||||
extern boolean com_eof;
|
|
||||||
|
|
||||||
char *COM_Parse (char *data);
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,93 +0,0 @@
|
||||||
// mathlib.c -- math primitives
|
|
||||||
|
|
||||||
#include "mathlib.h"
|
|
||||||
#include <math.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;
|
|
||||||
}
|
|
||||||
|
|
||||||
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];
|
|
||||||
}
|
|
||||||
|
|
||||||
boolean VectorCompare (vec3_t v1, vec3_t v2)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i=0 ; i<3 ; i++)
|
|
||||||
if (v1[i] != v2[i])
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
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 VectorNormalize (vec3_t v)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
float length;
|
|
||||||
|
|
||||||
length = 0;
|
|
||||||
for (i=0 ; i< 3 ; i++)
|
|
||||||
length += v[i]*v[i];
|
|
||||||
length = sqrt (length);
|
|
||||||
|
|
||||||
for (i=0 ; i< 3 ; i++)
|
|
||||||
v[i] /= length;
|
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,31 +0,0 @@
|
||||||
#ifndef __MATHLIB__
|
|
||||||
#define __MATHLIB__
|
|
||||||
|
|
||||||
#include "cmdlib.h"
|
|
||||||
|
|
||||||
// mathlib.h
|
|
||||||
|
|
||||||
typedef float vec_t;
|
|
||||||
typedef vec_t vec3_t[3];
|
|
||||||
|
|
||||||
extern vec3_t vec3_origin;
|
|
||||||
|
|
||||||
boolean 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];}
|
|
||||||
|
|
||||||
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 CrossProduct (vec3_t v1, vec3_t v2, vec3_t cross);
|
|
||||||
void VectorNormalize (vec3_t v);
|
|
||||||
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);
|
|
||||||
|
|
||||||
#endif
|
|
Loading…
Reference in a new issue