sin-sdk/g_utils.h
1998-12-20 00:00:00 +00:00

289 lines
7.3 KiB
C++

//-----------------------------------------------------------------------------
//
// $Logfile:: /Quake 2 Engine/Sin/code/game/g_utils.h $
// $Revision:: 15 $
// $Author:: Markd $
// $Date:: 10/26/98 3:50a $
//
// Copyright (C) 1998 by Ritual Entertainment, Inc.
// All rights reserved.
//
// This source may not be distributed and/or modified without
// expressly written permission by Ritual Entertainment, Inc.
//
// $Log:: /Quake 2 Engine/Sin/code/game/g_utils.h $
//
// 15 10/26/98 3:50a Markd
// put in prediction
//
// 14 10/18/98 3:23a Jimdose
// Added G_Milliseconds and G_DebugPrintf
//
// 13 10/16/98 7:18p Markd
// Changed ExecuteThread a little bit
//
// 12 10/10/98 1:34a Jimdose
// added edict archiving functions
//
// 11 10/09/98 4:54p Markd
// Added ExecuteThread
//
// 10 10/07/98 11:48p Jimdose
// Added G_FixSlashes
//
// 9 10/03/98 1:10p Aldie
// added findclientsinradius
//
// 8 9/14/98 5:41p Jimdose
// Added G_CalcBoundsOfMove
//
// 7 8/29/98 9:50p Jimdose
// Moved prototypes from g_local.h
// Moved all debugline functions from g_main.cpp
// Added trace info to G_Trace
//
// 6 8/27/98 9:05p Jimdose
// Moved several short functions to g_utils.h as inline
//
// 5 8/24/98 4:55p Markd
// Added G_CalculateImpulse
//
// 4 2/18/98 8:08p Jimdose
// Prototyped IsNumeric
//
// 3 2/06/98 5:51p Jimdose
// Added KillBox
// Changed G_TouchTriggers and M_CheckBottom to be .cpp compatible
//
// 2 2/03/98 10:49a Jimdose
// Created file.
//
// DESCRIPTION:
//
#ifndef __G_UTILS_H__
#define __G_UTILS_H__
class Archiver;
EXPORT_FROM_DLL void G_ArchiveEdict( Archiver &arc, edict_t *edict );
EXPORT_FROM_DLL void G_UnarchiveEdict( Archiver &arc, edict_t *edict );
#include "entity.h"
EXPORT_FROM_DLL void G_InitEdict (edict_t *e);
EXPORT_FROM_DLL edict_t *G_Spawn (void);
EXPORT_FROM_DLL void G_FreeEdict (edict_t *e);
EXPORT_FROM_DLL void G_TouchTriggers (Entity *ent);
EXPORT_FROM_DLL void G_TouchSolids (Entity *ent);
EXPORT_FROM_DLL char *G_CopyString (const char *in);
EXPORT_FROM_DLL int G_FindClass( int entnum, const char *classname );
EXPORT_FROM_DLL Entity *G_NextEntity( Entity *ent );
EXPORT_FROM_DLL void G_CalcBoundsOfMove( Vector &start, Vector &end, Vector &mins, Vector &maxs, Vector *minbounds, Vector *maxbounds );
EXPORT_FROM_DLL void G_ShowTrace( trace_t *trace, edict_t *passent, const char *reason );
EXPORT_FROM_DLL trace_t G_Trace( Vector &start, Vector &mins, Vector &maxs, Vector &end, Entity *passent, int contentmask, const char *reason );
EXPORT_FROM_DLL trace_t G_Trace( vec3_t start, vec3_t mins, vec3_t maxs, vec3_t end, edict_t *passent, int contentmask, const char *reason );
EXPORT_FROM_DLL trace_t G_FullTrace( Vector &start, Vector &mins, Vector &maxs, Vector &end, float radius, Entity *passent, int contentmask, const char *reason );
EXPORT_FROM_DLL trace_t G_FullTrace( vec3_t start, vec3_t mins, vec3_t maxs, vec3_t end, float radius, edict_t *passent, int contentmask, const char *reason );
EXPORT_FROM_DLL void SelectSpawnPoint( Vector &origin, Vector &angles, int *gravaxis = NULL );
EXPORT_FROM_DLL int G_FindTarget( int entnum, const char *name );
EXPORT_FROM_DLL Entity *G_NextEntity( Entity *ent );
EXPORT_FROM_DLL qboolean M_CheckBottom( Entity *ent );
EXPORT_FROM_DLL Vector G_GetMovedir( void );
EXPORT_FROM_DLL qboolean KillBox( Entity *ent );
EXPORT_FROM_DLL qboolean IsNumeric( const char *str );
EXPORT_FROM_DLL Entity *findradius( Entity *startent, Vector org, float rad );
EXPORT_FROM_DLL Entity *findclientsinradius( Entity *startent, Vector org, float rad );
EXPORT_FROM_DLL const char *G_GetNameForSurface( csurface_t *s );
EXPORT_FROM_DLL Vector G_CalculateImpulse( Vector start, Vector end, float speed, float gravity );
EXPORT_FROM_DLL Vector G_PredictPosition( Vector start, Vector target, Vector targetvelocity, float speed );
EXPORT_FROM_DLL void G_InitDebugLines( void );
EXPORT_FROM_DLL void G_DebugLine( Vector start, Vector end, float r, float g, float b, float alpha );
EXPORT_FROM_DLL void G_Color3f( float r, float g, float b );
EXPORT_FROM_DLL void G_Color3v( Vector color );
EXPORT_FROM_DLL void G_Color4f( float r, float g, float b, float alpha );
EXPORT_FROM_DLL void G_Color3vf( Vector color, float alpha );
EXPORT_FROM_DLL void G_BeginLine( void );
EXPORT_FROM_DLL void G_Vertex( Vector v );
EXPORT_FROM_DLL void G_EndLine( void );
EXPORT_FROM_DLL void G_DebugBBox( Vector origin, Vector mins, Vector maxs, float r, float g, float b, float alpha );
EXPORT_FROM_DLL void G_DrawDebugNumber( Vector origin, int number, float scale, float r, float g, float b );
EXPORT_FROM_DLL void G_LoadAndExecScript( const char *filename, const char *label = NULL );
EXPORT_FROM_DLL ScriptThread *ExecuteThread( str thread_name, qboolean start = true );
EXPORT_FROM_DLL int G_Milliseconds( void );
EXPORT_FROM_DLL void G_DebugPrintf( const char *fmt, ... );
//==================================================================
//
// Inline functions
//
//==================================================================
inline EXPORT_FROM_DLL float angmod
(
float v
)
{
int b;
b = ( int )v;
b = b - ( b % 360 );
if ( b < 0 )
{
b -= 360;
}
return v - ( float )b;
}
/*
=================
G_GetEntity
Takes an index to an entity and returns pointer to it.
=================
*/
inline EXPORT_FROM_DLL Entity *G_GetEntity
(
int entnum
)
{
if ( ( entnum < 0 ) || ( entnum >= globals.max_edicts ) )
{
gi.error ("G_GetEntity: %d out of valid range.", entnum );
}
return ( Entity * )g_edicts[ entnum ].entity;
}
/*
=================
G_Random
Returns a number from 0<= num < 1
random()
=================
*/
inline EXPORT_FROM_DLL float G_Random
(
void
)
{
return ( ( float )( rand() & 0x7fff ) ) / ( ( float )0x8000 );
}
/*
=================
G_Random
Returns a number from 0 <= num < n
random()
=================
*/
inline EXPORT_FROM_DLL float G_Random
(
float n
)
{
return G_Random() * n;
}
/*
=================
G_CRandom
Returns a number from -1 <= num < 1
crandom()
=================
*/
inline EXPORT_FROM_DLL float G_CRandom
(
void
)
{
return G_Random( 2 ) - 1;
}
/*
=================
G_CRandom
Returns a number from -n <= num < n
crandom()
=================
*/
inline EXPORT_FROM_DLL float G_CRandom
(
float n
)
{
return G_CRandom() * n;
}
/*
=================
G_FixSlashes
Converts all backslashes in a string to forward slashes.
Used to make filenames consistant.
=================
*/
inline EXPORT_FROM_DLL str G_FixSlashes
(
const char *filename
)
{
int i;
int len;
str text;
if ( filename )
{
// Convert all forward slashes to back slashes
text = filename;
len = text.length();
for( i = 0; i < len; i++ )
{
if ( text[ i ] == '\\' )
{
text[ i ] = '/';
}
}
}
return text;
}
#endif /* g_utils.h */