1 /*
2 ===========================================================================
3 Copyright (C) 1999-2005 Id Software, Inc.
4
5 This file is part of Quake III Arena source code.
6
7 Quake III Arena source code is free software; you can redistribute it
8 and/or modify it under the terms of the GNU General Public License as
9 published by the Free Software Foundation; either version 2 of the License,
10 or (at your option) any later version.
11
12 Quake III Arena source code is distributed in the hope that it will be
13 useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with Quake III Arena source code; if not, write to the Free Software
19 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20 ===========================================================================
21 */
22 //
23 // cg_syscalls.c -- this file is only included when building a dll
24 // cg_syscalls.asm is included instead when building a qvm
25 #ifdef Q3_VM
26 #error "Do not use in VM build"
27 #endif
28
29 #include "cg_local.h"
30
31 static intptr_t (QDECL *syscall)( intptr_t arg, ... ) = (intptr_t (QDECL *)( intptr_t, ...))-1;
32
33
dllEntry(intptr_t (QDECL * syscallptr)(intptr_t arg,...))34 void dllEntry( intptr_t (QDECL *syscallptr)( intptr_t arg,... ) ) {
35 syscall = syscallptr;
36 }
37
38
PASSFLOAT(float x)39 int PASSFLOAT( float x ) {
40 float floatTemp;
41 floatTemp = x;
42 return *(int *)&floatTemp;
43 }
44
trap_Print(const char * fmt)45 void trap_Print( const char *fmt ) {
46 syscall( CG_PRINT, fmt );
47 }
48
trap_Error(const char * fmt)49 void trap_Error( const char *fmt ) {
50 syscall( CG_ERROR, fmt );
51 }
52
trap_Milliseconds(void)53 int trap_Milliseconds( void ) {
54 return syscall( CG_MILLISECONDS );
55 }
56
trap_Cvar_Register(vmCvar_t * vmCvar,const char * varName,const char * defaultValue,int flags)57 void trap_Cvar_Register( vmCvar_t *vmCvar, const char *varName, const char *defaultValue, int flags ) {
58 syscall( CG_CVAR_REGISTER, vmCvar, varName, defaultValue, flags );
59 }
60
trap_Cvar_Update(vmCvar_t * vmCvar)61 void trap_Cvar_Update( vmCvar_t *vmCvar ) {
62 syscall( CG_CVAR_UPDATE, vmCvar );
63 }
64
trap_Cvar_Set(const char * var_name,const char * value)65 void trap_Cvar_Set( const char *var_name, const char *value ) {
66 syscall( CG_CVAR_SET, var_name, value );
67 }
68
trap_Cvar_VariableStringBuffer(const char * var_name,char * buffer,int bufsize)69 void trap_Cvar_VariableStringBuffer( const char *var_name, char *buffer, int bufsize ) {
70 syscall( CG_CVAR_VARIABLESTRINGBUFFER, var_name, buffer, bufsize );
71 }
72
trap_Argc(void)73 int trap_Argc( void ) {
74 return syscall( CG_ARGC );
75 }
76
trap_Argv(int n,char * buffer,int bufferLength)77 void trap_Argv( int n, char *buffer, int bufferLength ) {
78 syscall( CG_ARGV, n, buffer, bufferLength );
79 }
80
trap_Args(char * buffer,int bufferLength)81 void trap_Args( char *buffer, int bufferLength ) {
82 syscall( CG_ARGS, buffer, bufferLength );
83 }
84
trap_FS_FOpenFile(const char * qpath,fileHandle_t * f,fsMode_t mode)85 int trap_FS_FOpenFile( const char *qpath, fileHandle_t *f, fsMode_t mode ) {
86 return syscall( CG_FS_FOPENFILE, qpath, f, mode );
87 }
88
trap_FS_Read(void * buffer,int len,fileHandle_t f)89 void trap_FS_Read( void *buffer, int len, fileHandle_t f ) {
90 syscall( CG_FS_READ, buffer, len, f );
91 }
92
trap_FS_Write(const void * buffer,int len,fileHandle_t f)93 void trap_FS_Write( const void *buffer, int len, fileHandle_t f ) {
94 syscall( CG_FS_WRITE, buffer, len, f );
95 }
96
trap_FS_FCloseFile(fileHandle_t f)97 void trap_FS_FCloseFile( fileHandle_t f ) {
98 syscall( CG_FS_FCLOSEFILE, f );
99 }
100
trap_FS_Seek(fileHandle_t f,long offset,int origin)101 int trap_FS_Seek( fileHandle_t f, long offset, int origin ) {
102 return syscall( CG_FS_SEEK, f, offset, origin );
103 }
104
trap_SendConsoleCommand(const char * text)105 void trap_SendConsoleCommand( const char *text ) {
106 syscall( CG_SENDCONSOLECOMMAND, text );
107 }
108
trap_AddCommand(const char * cmdName)109 void trap_AddCommand( const char *cmdName ) {
110 syscall( CG_ADDCOMMAND, cmdName );
111 }
112
trap_RemoveCommand(const char * cmdName)113 void trap_RemoveCommand( const char *cmdName ) {
114 syscall( CG_REMOVECOMMAND, cmdName );
115 }
116
trap_SendClientCommand(const char * s)117 void trap_SendClientCommand( const char *s ) {
118 syscall( CG_SENDCLIENTCOMMAND, s );
119 }
120
trap_UpdateScreen(void)121 void trap_UpdateScreen( void ) {
122 syscall( CG_UPDATESCREEN );
123 }
124
trap_CM_LoadMap(const char * mapname)125 void trap_CM_LoadMap( const char *mapname ) {
126 syscall( CG_CM_LOADMAP, mapname );
127 }
128
trap_CM_NumInlineModels(void)129 int trap_CM_NumInlineModels( void ) {
130 return syscall( CG_CM_NUMINLINEMODELS );
131 }
132
trap_CM_InlineModel(int index)133 clipHandle_t trap_CM_InlineModel( int index ) {
134 return syscall( CG_CM_INLINEMODEL, index );
135 }
136
trap_CM_TempBoxModel(const vec3_t mins,const vec3_t maxs)137 clipHandle_t trap_CM_TempBoxModel( const vec3_t mins, const vec3_t maxs ) {
138 return syscall( CG_CM_TEMPBOXMODEL, mins, maxs );
139 }
140
trap_CM_TempCapsuleModel(const vec3_t mins,const vec3_t maxs)141 clipHandle_t trap_CM_TempCapsuleModel( const vec3_t mins, const vec3_t maxs ) {
142 return syscall( CG_CM_TEMPCAPSULEMODEL, mins, maxs );
143 }
144
trap_CM_PointContents(const vec3_t p,clipHandle_t model)145 int trap_CM_PointContents( const vec3_t p, clipHandle_t model ) {
146 return syscall( CG_CM_POINTCONTENTS, p, model );
147 }
148
trap_CM_TransformedPointContents(const vec3_t p,clipHandle_t model,const vec3_t origin,const vec3_t angles)149 int trap_CM_TransformedPointContents( const vec3_t p, clipHandle_t model, const vec3_t origin, const vec3_t angles ) {
150 return syscall( CG_CM_TRANSFORMEDPOINTCONTENTS, p, model, origin, angles );
151 }
152
trap_CM_BoxTrace(trace_t * results,const vec3_t start,const vec3_t end,const vec3_t mins,const vec3_t maxs,clipHandle_t model,int brushmask)153 void trap_CM_BoxTrace( trace_t *results, const vec3_t start, const vec3_t end,
154 const vec3_t mins, const vec3_t maxs,
155 clipHandle_t model, int brushmask ) {
156 syscall( CG_CM_BOXTRACE, results, start, end, mins, maxs, model, brushmask );
157 }
158
trap_CM_CapsuleTrace(trace_t * results,const vec3_t start,const vec3_t end,const vec3_t mins,const vec3_t maxs,clipHandle_t model,int brushmask)159 void trap_CM_CapsuleTrace( trace_t *results, const vec3_t start, const vec3_t end,
160 const vec3_t mins, const vec3_t maxs,
161 clipHandle_t model, int brushmask ) {
162 syscall( CG_CM_CAPSULETRACE, results, start, end, mins, maxs, model, brushmask );
163 }
164
trap_CM_TransformedBoxTrace(trace_t * results,const vec3_t start,const vec3_t end,const vec3_t mins,const vec3_t maxs,clipHandle_t model,int brushmask,const vec3_t origin,const vec3_t angles)165 void trap_CM_TransformedBoxTrace( trace_t *results, const vec3_t start, const vec3_t end,
166 const vec3_t mins, const vec3_t maxs,
167 clipHandle_t model, int brushmask,
168 const vec3_t origin, const vec3_t angles ) {
169 syscall( CG_CM_TRANSFORMEDBOXTRACE, results, start, end, mins, maxs, model, brushmask, origin, angles );
170 }
171
trap_CM_TransformedCapsuleTrace(trace_t * results,const vec3_t start,const vec3_t end,const vec3_t mins,const vec3_t maxs,clipHandle_t model,int brushmask,const vec3_t origin,const vec3_t angles)172 void trap_CM_TransformedCapsuleTrace( trace_t *results, const vec3_t start, const vec3_t end,
173 const vec3_t mins, const vec3_t maxs,
174 clipHandle_t model, int brushmask,
175 const vec3_t origin, const vec3_t angles ) {
176 syscall( CG_CM_TRANSFORMEDCAPSULETRACE, results, start, end, mins, maxs, model, brushmask, origin, angles );
177 }
178
trap_CM_MarkFragments(int numPoints,const vec3_t * points,const vec3_t projection,int maxPoints,vec3_t pointBuffer,int maxFragments,markFragment_t * fragmentBuffer)179 int trap_CM_MarkFragments( int numPoints, const vec3_t *points,
180 const vec3_t projection,
181 int maxPoints, vec3_t pointBuffer,
182 int maxFragments, markFragment_t *fragmentBuffer ) {
183 return syscall( CG_CM_MARKFRAGMENTS, numPoints, points, projection, maxPoints, pointBuffer, maxFragments, fragmentBuffer );
184 }
185
trap_S_StartSound(vec3_t origin,int entityNum,int entchannel,sfxHandle_t sfx)186 void trap_S_StartSound( vec3_t origin, int entityNum, int entchannel, sfxHandle_t sfx ) {
187 syscall( CG_S_STARTSOUND, origin, entityNum, entchannel, sfx );
188 }
189
trap_S_StartLocalSound(sfxHandle_t sfx,int channelNum)190 void trap_S_StartLocalSound( sfxHandle_t sfx, int channelNum ) {
191 syscall( CG_S_STARTLOCALSOUND, sfx, channelNum );
192 }
193
trap_S_ClearLoopingSounds(qboolean killall)194 void trap_S_ClearLoopingSounds( qboolean killall ) {
195 syscall( CG_S_CLEARLOOPINGSOUNDS, killall );
196 }
197
trap_S_AddLoopingSound(int entityNum,const vec3_t origin,const vec3_t velocity,sfxHandle_t sfx)198 void trap_S_AddLoopingSound( int entityNum, const vec3_t origin, const vec3_t velocity, sfxHandle_t sfx ) {
199 syscall( CG_S_ADDLOOPINGSOUND, entityNum, origin, velocity, sfx );
200 }
201
trap_S_AddRealLoopingSound(int entityNum,const vec3_t origin,const vec3_t velocity,sfxHandle_t sfx)202 void trap_S_AddRealLoopingSound( int entityNum, const vec3_t origin, const vec3_t velocity, sfxHandle_t sfx ) {
203 syscall( CG_S_ADDREALLOOPINGSOUND, entityNum, origin, velocity, sfx );
204 }
205
trap_S_StopLoopingSound(int entityNum)206 void trap_S_StopLoopingSound( int entityNum ) {
207 syscall( CG_S_STOPLOOPINGSOUND, entityNum );
208 }
209
trap_S_UpdateEntityPosition(int entityNum,const vec3_t origin)210 void trap_S_UpdateEntityPosition( int entityNum, const vec3_t origin ) {
211 syscall( CG_S_UPDATEENTITYPOSITION, entityNum, origin );
212 }
213
trap_S_Respatialize(int entityNum,const vec3_t origin,vec3_t axis[3],int inwater)214 void trap_S_Respatialize( int entityNum, const vec3_t origin, vec3_t axis[3], int inwater ) {
215 syscall( CG_S_RESPATIALIZE, entityNum, origin, axis, inwater );
216 }
217
trap_S_RegisterSound(const char * sample,qboolean compressed)218 sfxHandle_t trap_S_RegisterSound( const char *sample, qboolean compressed ) {
219 return syscall( CG_S_REGISTERSOUND, sample, compressed );
220 }
221
trap_S_StartBackgroundTrack(const char * intro,const char * loop)222 void trap_S_StartBackgroundTrack( const char *intro, const char *loop ) {
223 syscall( CG_S_STARTBACKGROUNDTRACK, intro, loop );
224 }
225
trap_R_LoadWorldMap(const char * mapname)226 void trap_R_LoadWorldMap( const char *mapname ) {
227 syscall( CG_R_LOADWORLDMAP, mapname );
228 }
229
trap_R_RegisterModel(const char * name)230 qhandle_t trap_R_RegisterModel( const char *name ) {
231 return syscall( CG_R_REGISTERMODEL, name );
232 }
233
trap_R_RegisterSkin(const char * name)234 qhandle_t trap_R_RegisterSkin( const char *name ) {
235 return syscall( CG_R_REGISTERSKIN, name );
236 }
237
trap_R_RegisterShader(const char * name)238 qhandle_t trap_R_RegisterShader( const char *name ) {
239 return syscall( CG_R_REGISTERSHADER, name );
240 }
241
trap_R_RegisterShaderNoMip(const char * name)242 qhandle_t trap_R_RegisterShaderNoMip( const char *name ) {
243 return syscall( CG_R_REGISTERSHADERNOMIP, name );
244 }
245
trap_R_RegisterFont(const char * fontName,int pointSize,fontInfo_t * font)246 void trap_R_RegisterFont(const char *fontName, int pointSize, fontInfo_t *font) {
247 syscall(CG_R_REGISTERFONT, fontName, pointSize, font );
248 }
249
trap_R_ClearScene(void)250 void trap_R_ClearScene( void ) {
251 syscall( CG_R_CLEARSCENE );
252 }
253
trap_R_AddRefEntityToScene(const refEntity_t * re)254 void trap_R_AddRefEntityToScene( const refEntity_t *re ) {
255 syscall( CG_R_ADDREFENTITYTOSCENE, re );
256 }
257
trap_R_AddPolyToScene(qhandle_t hShader,int numVerts,const polyVert_t * verts)258 void trap_R_AddPolyToScene( qhandle_t hShader , int numVerts, const polyVert_t *verts ) {
259 syscall( CG_R_ADDPOLYTOSCENE, hShader, numVerts, verts );
260 }
261
trap_R_AddPolysToScene(qhandle_t hShader,int numVerts,const polyVert_t * verts,int num)262 void trap_R_AddPolysToScene( qhandle_t hShader , int numVerts, const polyVert_t *verts, int num ) {
263 syscall( CG_R_ADDPOLYSTOSCENE, hShader, numVerts, verts, num );
264 }
265
trap_R_LightForPoint(vec3_t point,vec3_t ambientLight,vec3_t directedLight,vec3_t lightDir)266 int trap_R_LightForPoint( vec3_t point, vec3_t ambientLight, vec3_t directedLight, vec3_t lightDir ) {
267 return syscall( CG_R_LIGHTFORPOINT, point, ambientLight, directedLight, lightDir );
268 }
269
trap_R_AddLightToScene(const vec3_t org,float intensity,float r,float g,float b)270 void trap_R_AddLightToScene( const vec3_t org, float intensity, float r, float g, float b ) {
271 syscall( CG_R_ADDLIGHTTOSCENE, org, PASSFLOAT(intensity), PASSFLOAT(r), PASSFLOAT(g), PASSFLOAT(b) );
272 }
273
trap_R_AddAdditiveLightToScene(const vec3_t org,float intensity,float r,float g,float b)274 void trap_R_AddAdditiveLightToScene( const vec3_t org, float intensity, float r, float g, float b ) {
275 syscall( CG_R_ADDADDITIVELIGHTTOSCENE, org, PASSFLOAT(intensity), PASSFLOAT(r), PASSFLOAT(g), PASSFLOAT(b) );
276 }
277
trap_R_RenderScene(const refdef_t * fd)278 void trap_R_RenderScene( const refdef_t *fd ) {
279 syscall( CG_R_RENDERSCENE, fd );
280 }
281
trap_R_SetColor(const float * rgba)282 void trap_R_SetColor( const float *rgba ) {
283 syscall( CG_R_SETCOLOR, rgba );
284 }
285
trap_R_DrawStretchPic(float x,float y,float w,float h,float s1,float t1,float s2,float t2,qhandle_t hShader)286 void trap_R_DrawStretchPic( float x, float y, float w, float h,
287 float s1, float t1, float s2, float t2, qhandle_t hShader ) {
288 syscall( CG_R_DRAWSTRETCHPIC, PASSFLOAT(x), PASSFLOAT(y), PASSFLOAT(w), PASSFLOAT(h), PASSFLOAT(s1), PASSFLOAT(t1), PASSFLOAT(s2), PASSFLOAT(t2), hShader );
289 }
290
trap_R_ModelBounds(clipHandle_t model,vec3_t mins,vec3_t maxs)291 void trap_R_ModelBounds( clipHandle_t model, vec3_t mins, vec3_t maxs ) {
292 syscall( CG_R_MODELBOUNDS, model, mins, maxs );
293 }
294
trap_R_LerpTag(orientation_t * tag,clipHandle_t mod,int startFrame,int endFrame,float frac,const char * tagName)295 int trap_R_LerpTag( orientation_t *tag, clipHandle_t mod, int startFrame, int endFrame,
296 float frac, const char *tagName ) {
297 return syscall( CG_R_LERPTAG, tag, mod, startFrame, endFrame, PASSFLOAT(frac), tagName );
298 }
299
trap_R_RemapShader(const char * oldShader,const char * newShader,const char * timeOffset)300 void trap_R_RemapShader( const char *oldShader, const char *newShader, const char *timeOffset ) {
301 syscall( CG_R_REMAP_SHADER, oldShader, newShader, timeOffset );
302 }
303
trap_GetGlconfig(glConfig_t * glconfig)304 void trap_GetGlconfig( glConfig_t *glconfig ) {
305 syscall( CG_GETGLCONFIG, glconfig );
306 }
307
trap_GetGameState(gameState_t * gamestate)308 void trap_GetGameState( gameState_t *gamestate ) {
309 syscall( CG_GETGAMESTATE, gamestate );
310 }
311
trap_GetCurrentSnapshotNumber(int * snapshotNumber,int * serverTime)312 void trap_GetCurrentSnapshotNumber( int *snapshotNumber, int *serverTime ) {
313 syscall( CG_GETCURRENTSNAPSHOTNUMBER, snapshotNumber, serverTime );
314 }
315
trap_GetSnapshot(int snapshotNumber,snapshot_t * snapshot)316 qboolean trap_GetSnapshot( int snapshotNumber, snapshot_t *snapshot ) {
317 return syscall( CG_GETSNAPSHOT, snapshotNumber, snapshot );
318 }
319
trap_GetServerCommand(int serverCommandNumber)320 qboolean trap_GetServerCommand( int serverCommandNumber ) {
321 return syscall( CG_GETSERVERCOMMAND, serverCommandNumber );
322 }
323
trap_GetCurrentCmdNumber(void)324 int trap_GetCurrentCmdNumber( void ) {
325 return syscall( CG_GETCURRENTCMDNUMBER );
326 }
327
trap_GetUserCmd(int cmdNumber,usercmd_t * ucmd)328 qboolean trap_GetUserCmd( int cmdNumber, usercmd_t *ucmd ) {
329 return syscall( CG_GETUSERCMD, cmdNumber, ucmd );
330 }
331
trap_SetUserCmdValue(int stateValue,float sensitivityScale)332 void trap_SetUserCmdValue( int stateValue, float sensitivityScale ) {
333 syscall( CG_SETUSERCMDVALUE, stateValue, PASSFLOAT(sensitivityScale) );
334 }
335
testPrintInt(char * string,int i)336 void testPrintInt( char *string, int i ) {
337 syscall( CG_TESTPRINTINT, string, i );
338 }
339
testPrintFloat(char * string,float f)340 void testPrintFloat( char *string, float f ) {
341 syscall( CG_TESTPRINTFLOAT, string, PASSFLOAT(f) );
342 }
343
trap_MemoryRemaining(void)344 int trap_MemoryRemaining( void ) {
345 return syscall( CG_MEMORY_REMAINING );
346 }
347
trap_Key_IsDown(int keynum)348 qboolean trap_Key_IsDown( int keynum ) {
349 return syscall( CG_KEY_ISDOWN, keynum );
350 }
351
trap_Key_GetCatcher(void)352 int trap_Key_GetCatcher( void ) {
353 return syscall( CG_KEY_GETCATCHER );
354 }
355
trap_Key_SetCatcher(int catcher)356 void trap_Key_SetCatcher( int catcher ) {
357 syscall( CG_KEY_SETCATCHER, catcher );
358 }
359
trap_Key_GetKey(const char * binding)360 int trap_Key_GetKey( const char *binding ) {
361 return syscall( CG_KEY_GETKEY, binding );
362 }
363
trap_PC_AddGlobalDefine(char * define)364 int trap_PC_AddGlobalDefine( char *define ) {
365 return syscall( CG_PC_ADD_GLOBAL_DEFINE, define );
366 }
367
trap_PC_LoadSource(const char * filename)368 int trap_PC_LoadSource( const char *filename ) {
369 return syscall( CG_PC_LOAD_SOURCE, filename );
370 }
371
trap_PC_FreeSource(int handle)372 int trap_PC_FreeSource( int handle ) {
373 return syscall( CG_PC_FREE_SOURCE, handle );
374 }
375
trap_PC_ReadToken(int handle,pc_token_t * pc_token)376 int trap_PC_ReadToken( int handle, pc_token_t *pc_token ) {
377 return syscall( CG_PC_READ_TOKEN, handle, pc_token );
378 }
379
trap_PC_SourceFileAndLine(int handle,char * filename,int * line)380 int trap_PC_SourceFileAndLine( int handle, char *filename, int *line ) {
381 return syscall( CG_PC_SOURCE_FILE_AND_LINE, handle, filename, line );
382 }
383
trap_S_StopBackgroundTrack(void)384 void trap_S_StopBackgroundTrack( void ) {
385 syscall( CG_S_STOPBACKGROUNDTRACK );
386 }
387
trap_RealTime(qtime_t * qtime)388 int trap_RealTime(qtime_t *qtime) {
389 return syscall( CG_REAL_TIME, qtime );
390 }
391
trap_SnapVector(float * v)392 void trap_SnapVector( float *v ) {
393 syscall( CG_SNAPVECTOR, v );
394 }
395
396 // this returns a handle. arg0 is the name in the format "idlogo.roq", set arg1 to NULL, alteredstates to qfalse (do not alter gamestate)
trap_CIN_PlayCinematic(const char * arg0,int xpos,int ypos,int width,int height,int bits)397 int trap_CIN_PlayCinematic( const char *arg0, int xpos, int ypos, int width, int height, int bits) {
398 return syscall(CG_CIN_PLAYCINEMATIC, arg0, xpos, ypos, width, height, bits);
399 }
400
401 // stops playing the cinematic and ends it. should always return FMV_EOF
402 // cinematics must be stopped in reverse order of when they are started
trap_CIN_StopCinematic(int handle)403 e_status trap_CIN_StopCinematic(int handle) {
404 return syscall(CG_CIN_STOPCINEMATIC, handle);
405 }
406
407
408 // will run a frame of the cinematic but will not draw it. Will return FMV_EOF if the end of the cinematic has been reached.
trap_CIN_RunCinematic(int handle)409 e_status trap_CIN_RunCinematic (int handle) {
410 return syscall(CG_CIN_RUNCINEMATIC, handle);
411 }
412
413
414 // draws the current frame
trap_CIN_DrawCinematic(int handle)415 void trap_CIN_DrawCinematic (int handle) {
416 syscall(CG_CIN_DRAWCINEMATIC, handle);
417 }
418
419
420 // allows you to resize the animation dynamically
trap_CIN_SetExtents(int handle,int x,int y,int w,int h)421 void trap_CIN_SetExtents (int handle, int x, int y, int w, int h) {
422 syscall(CG_CIN_SETEXTENTS, handle, x, y, w, h);
423 }
424
425 /*
426 qboolean trap_loadCamera( const char *name ) {
427 return syscall( CG_LOADCAMERA, name );
428 }
429
430 void trap_startCamera(int time) {
431 syscall(CG_STARTCAMERA, time);
432 }
433
434 qboolean trap_getCameraInfo( int time, vec3_t *origin, vec3_t *angles) {
435 return syscall( CG_GETCAMERAINFO, time, origin, angles );
436 }
437 */
438
trap_GetEntityToken(char * buffer,int bufferSize)439 qboolean trap_GetEntityToken( char *buffer, int bufferSize ) {
440 return syscall( CG_GET_ENTITY_TOKEN, buffer, bufferSize );
441 }
442
trap_R_inPVS(const vec3_t p1,const vec3_t p2)443 qboolean trap_R_inPVS( const vec3_t p1, const vec3_t p2 ) {
444 return syscall( CG_R_INPVS, p1, p2 );
445 }
446