Fix fixes.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@6273 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
9371b7ca14
commit
d41ca13562
15 changed files with 96 additions and 65 deletions
|
@ -176,6 +176,8 @@ function build {
|
|||
fi
|
||||
echo -n "Making $NAME... "
|
||||
date > $BUILDLOGFOLDER/$DEST.txt
|
||||
echo BUILD: $NAME >> $BUILDLOGFOLDER/$DEST.txt
|
||||
echo PLUGINS: $NATIVE_PLUGINS >> $BUILDLOGFOLDER/$DEST.txt
|
||||
echo make $MAKEARGS $* >> $BUILDLOGFOLDER/$DEST.txt 2>&1
|
||||
make $MAKEARGS $* >> $BUILDLOGFOLDER/$DEST.txt 2>&1
|
||||
if [ $? -eq 0 ]; then
|
||||
|
|
|
@ -672,7 +672,14 @@ static size_t QDECL Plug_GetServerInfoBlob(const char *key, void *outptr, size_t
|
|||
if (!blob)
|
||||
{ //inescapable hacks
|
||||
if (!strcmp(key, "matchstart"))
|
||||
snprintf(tmp, sizeof(tmp), "%f", cl.playerview[0].statsf[STAT_MATCHSTARTTIME]?cl.playerview[0].statsf[STAT_MATCHSTARTTIME]/1000:cl.matchgametimestart), blob=tmp;
|
||||
{
|
||||
float matchstart = cl.matchgametimestart;
|
||||
#ifdef QUAKEHUD
|
||||
if (cl.playerview[0].statsf[STAT_MATCHSTARTTIME])
|
||||
matchstart = cl.playerview[0].statsf[STAT_MATCHSTARTTIME]/1000;
|
||||
#endif
|
||||
snprintf(tmp, sizeof(tmp), "%f", matchstart), blob=tmp;
|
||||
}
|
||||
else if (!strcmp(key, "demotime"))
|
||||
{
|
||||
extern float demtime;
|
||||
|
|
|
@ -198,7 +198,9 @@ static char *manifestpackages; //metapackage named by the manicfest.
|
|||
static char *declinedpackages; //metapackage named by the manicfest.
|
||||
static int domanifestinstall; //SECURITY_MANIFEST_*
|
||||
|
||||
#ifdef PLUGINS
|
||||
static int pluginsadded; //so we only show prompts for new externally-installed plugins once, instead of every time the file is reloaded.
|
||||
#endif
|
||||
|
||||
#ifdef WEBCLIENT
|
||||
static struct
|
||||
|
@ -2893,7 +2895,9 @@ static void PM_UpdatePackageList(qboolean autoupdate, int retry)
|
|||
|
||||
if (autoupdate)
|
||||
{
|
||||
#ifdef WEBCLIENT
|
||||
doautoupdate = 0;
|
||||
#endif
|
||||
if (PM_MarkUpdates())
|
||||
{
|
||||
#ifdef DOWNLOADMENU
|
||||
|
@ -5217,6 +5221,7 @@ static void MD_Draw (int x, int y, struct menucustom_s *c, struct emenu_s *m)
|
|||
if (c->dint != downloadablessequence)
|
||||
return; //probably stale
|
||||
|
||||
#ifdef WEBCLIENT
|
||||
if (allowphonehome == -2)
|
||||
{
|
||||
allowphonehome = false;
|
||||
|
@ -5224,6 +5229,7 @@ static void MD_Draw (int x, int y, struct menucustom_s *c, struct emenu_s *m)
|
|||
Menu_Prompt(PM_AllowPackageListQuery_Callback, NULL, "Query updates list?\n", "Okay", NULL, "Nope", true);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
p = c->dptr;
|
||||
if (p)
|
||||
|
|
|
@ -105,6 +105,10 @@ void Sys_Vibrate(float count)
|
|||
// vibrateduration += count*10*sys_vibrate.value;
|
||||
}
|
||||
|
||||
qboolean INS_KeyToLocalName(int qkey, char *buf, size_t bufsize)
|
||||
{ //onscreen keyboard? erk.
|
||||
return false;
|
||||
}
|
||||
static int mapkey(int androidkey)
|
||||
{
|
||||
switch(androidkey)
|
||||
|
|
|
@ -208,7 +208,9 @@
|
|||
#ifdef AVAIL_JPEGLIB
|
||||
-DLINK_JPEG
|
||||
#endif
|
||||
//-DLINK_QUAKE3 //ask the makefile to bake the quake3 plugin into the engine itself.
|
||||
#if defined(PLUGINS) && (defined(Q3SERVER) || defined(Q3CLIENT))
|
||||
-DLINK_QUAKE3 //ask the makefile to bake the quake3 plugin into the engine itself.
|
||||
#endif
|
||||
|
||||
//-DNO_OPUS
|
||||
//-DNO_SPEEX //disable static speex
|
||||
|
|
|
@ -220,9 +220,11 @@ extern qbyte *mod_base;
|
|||
dist = plane->dist - dist; \
|
||||
break;
|
||||
|
||||
#ifdef Q2BSPS
|
||||
#ifdef HAVE_CLIENT
|
||||
static unsigned char q2_palette[256*3];
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
|
@ -1285,7 +1287,7 @@ static qboolean CModQ2_LoadSurfaces (model_t *mod, qbyte *mod_base, lump_t *l)
|
|||
|
||||
return true;
|
||||
}
|
||||
#ifndef SERVERONLY
|
||||
#ifdef HAVE_CLIENT
|
||||
static texture_t *Mod_LoadWall(model_t *loadmodel, char *mapname, char *texname, char *shadername, unsigned int imageflags)
|
||||
{
|
||||
char name[MAX_QPATH];
|
||||
|
|
|
@ -7234,7 +7234,7 @@ static qboolean FTENET_WebRTC_GetPacket(ftenet_generic_connection_t *gcon)
|
|||
const char *s;
|
||||
char *p;
|
||||
|
||||
MSG_BeginReading(msg_nullnetprim);
|
||||
MSG_BeginReading(&net_message, msg_nullnetprim);
|
||||
cmd = MSG_ReadByte();
|
||||
cl = MSG_ReadShort();
|
||||
|
||||
|
|
|
@ -9,10 +9,12 @@
|
|||
#define FTEENGINE
|
||||
#include "../plugins/plugin.h"
|
||||
|
||||
#ifdef PLUGINS
|
||||
|
||||
#if defined(Q3SERVER)||defined(Q3CLIENT)
|
||||
struct q3gamecode_s *q3;
|
||||
static struct plugin_s *q3plug;
|
||||
|
||||
#ifdef PLUGINS
|
||||
#endif
|
||||
|
||||
#define Q_snprintf Q_snprintfz
|
||||
#define Q_strlcpy Q_strncpyz
|
||||
|
@ -1588,11 +1590,13 @@ void Plug_Close(plugin_t *plug)
|
|||
FS_UnRegisterFileSystemModule(plug);
|
||||
Mod_UnRegisterAllModelFormats(plug);
|
||||
|
||||
#if defined(Q3SERVER)||defined(Q3CLIENT)
|
||||
if (q3plug == plug)
|
||||
{
|
||||
q3 = NULL;
|
||||
q3plug = NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
//tell the plugin that everything is closed and that it should free up any lingering memory/stuff
|
||||
//it is still allowed to create/have open files.
|
||||
|
|
|
@ -116,6 +116,25 @@ qboolean Sys_GetDesktopParameters(int *width, int *height, int *bpp, int *refres
|
|||
#define FTE_Atomic32_Dec(ptr) FTE_Atomic32Mutex_Add(ptr, -1)
|
||||
#endif
|
||||
|
||||
|
||||
typedef enum wgroup_e
|
||||
{
|
||||
WG_MAIN = 0,
|
||||
WG_LOADER = 1,
|
||||
WG_COUNT = 2 //main and loaders
|
||||
} wgroup_t;
|
||||
typedef struct
|
||||
{
|
||||
void *(QDECL *CreateMutex)(void);
|
||||
qboolean (QDECL *LockMutex)(void *mutex);
|
||||
qboolean (QDECL *UnlockMutex)(void *mutex);
|
||||
void (QDECL *DestroyMutex)(void *mutex);
|
||||
|
||||
void (*AddWork)(wgroup_t thread, void(*func)(void *ctx, void *data, size_t a, size_t b), void *ctx, void *data, size_t a, size_t b); //low priority
|
||||
void (*WaitForCompletion)(void *priorityctx, int *address, int sleepwhilevalue);
|
||||
#define plugthreadfuncs_name "Threading"
|
||||
} plugthreadfuncs_t;
|
||||
|
||||
#ifdef MULTITHREAD
|
||||
#if defined(_WIN32) && defined(_DEBUG)
|
||||
void Sys_SetThreadName(unsigned int dwThreadID, char *threadName);
|
||||
|
@ -149,24 +168,6 @@ qboolean Sys_ConditionSignal(void *condv); //lock first
|
|||
qboolean Sys_ConditionBroadcast(void *condv); //lock first
|
||||
void Sys_DestroyConditional(void *condv);
|
||||
|
||||
typedef enum wgroup_e
|
||||
{
|
||||
WG_MAIN = 0,
|
||||
WG_LOADER = 1,
|
||||
WG_COUNT = 2 //main and loaders
|
||||
} wgroup_t;
|
||||
typedef struct
|
||||
{
|
||||
void *(QDECL *CreateMutex)(void);
|
||||
qboolean (QDECL *LockMutex)(void *mutex);
|
||||
qboolean (QDECL *UnlockMutex)(void *mutex);
|
||||
void (QDECL *DestroyMutex)(void *mutex);
|
||||
|
||||
void (*AddWork)(wgroup_t thread, void(*func)(void *ctx, void *data, size_t a, size_t b), void *ctx, void *data, size_t a, size_t b); //low priority
|
||||
void (*WaitForCompletion)(void *priorityctx, int *address, int sleepwhilevalue);
|
||||
#define plugthreadfuncs_name "Threading"
|
||||
} plugthreadfuncs_t;
|
||||
|
||||
//to try to catch leaks more easily.
|
||||
#ifdef USE_MSVCRT_DEBUG
|
||||
void *Sys_CreateMutexNamed(char *file, int line);
|
||||
|
|
|
@ -4526,7 +4526,7 @@ static void QCBUILTIN PF_getsoundindex (pubprogfuncs_t *prinst, struct globalvar
|
|||
static void QCBUILTIN PF_soundnameforindex (pubprogfuncs_t *prinst, struct globalvars_s *pr_globals)
|
||||
{
|
||||
int idx = G_FLOAT(OFS_PARM0);
|
||||
if (idx >= 0 && idx < MAX_PRECACHE_SOUNDS && sv.strings.sound_precache)
|
||||
if (idx >= 0 && idx < MAX_PRECACHE_SOUNDS && sv.strings.sound_precache[idx])
|
||||
RETURN_TSTRING(sv.strings.sound_precache[idx]);
|
||||
else
|
||||
G_INT(OFS_RETURN) = 0;
|
||||
|
@ -4625,7 +4625,7 @@ static void QCBUILTIN PF_getmodelindex (pubprogfuncs_t *prinst, struct globalvar
|
|||
static void QCBUILTIN PF_modelnameforindex (pubprogfuncs_t *prinst, struct globalvars_s *pr_globals)
|
||||
{
|
||||
int idx = G_FLOAT(OFS_PARM0);
|
||||
if (idx >= 0 && idx < MAX_PRECACHE_MODELS && sv.strings.model_precache)
|
||||
if (idx >= 0 && idx < MAX_PRECACHE_MODELS && sv.strings.model_precache[idx])
|
||||
RETURN_TSTRING(sv.strings.model_precache[idx]);
|
||||
else
|
||||
G_INT(OFS_RETURN) = 0;
|
||||
|
|
|
@ -101,7 +101,7 @@ mergeInto(LibraryManager.library,
|
|||
blen = lengthBytesUTF8(mime)+1;
|
||||
let mimeptr = _malloc(blen);
|
||||
stringToUTF8(mime, mimeptr,blen);
|
||||
{{{makeDynCall('viii')}}}(FTEC.evcb.loadfile, urlptr, mimeptr, handle);
|
||||
{{{makeDynCall('viii','FTEC.evcb.loadfile')}}}(urlptr, mimeptr, handle);
|
||||
_free(mimeptr);
|
||||
_free(urlptr);
|
||||
window.focus();
|
||||
|
@ -115,7 +115,7 @@ mergeInto(LibraryManager.library,
|
|||
let blen = lengthBytesUTF8(command)+1;
|
||||
let ptr = _malloc(blen);
|
||||
stringToUTF8(command, ptr, blen);
|
||||
{{{makeDynCall('vi')}}}(FTEC.evcb.cbufaddtext, ptr);
|
||||
{{{makeDynCall('vi','FTEC.evcb.cbufaddtext')}}}(ptr);
|
||||
_free(ptr);
|
||||
window.focus();
|
||||
}
|
||||
|
@ -129,7 +129,7 @@ mergeInto(LibraryManager.library,
|
|||
|
||||
try //this try is needed to handle Host_EndGame properly.
|
||||
{
|
||||
dovsync = {{{makeDynCall('if')}}}(FTEC.evcb.frame,timestamp);
|
||||
dovsync = {{{makeDynCall('if','FTEC.evcb.frame')}}}(timestamp);
|
||||
}
|
||||
catch(err)
|
||||
{
|
||||
|
@ -153,7 +153,7 @@ mergeInto(LibraryManager.library,
|
|||
case 'resize':
|
||||
if (FTEC.evcb.resize != 0)
|
||||
{
|
||||
{{{makeDynCall('vii')}}}(FTEC.evcb.resize, Module['canvas'].width, Module['canvas'].height);
|
||||
{{{makeDynCall('vii','FTEC.evcb.resize')}}}(Module['canvas'].width, Module['canvas'].height);
|
||||
}
|
||||
break;
|
||||
case 'mousemove':
|
||||
|
@ -171,12 +171,12 @@ mergeInto(LibraryManager.library,
|
|||
event.movementX = event.webkitMovementX;
|
||||
event.movementY = event.webkitMovementY;
|
||||
}
|
||||
{{{makeDynCall('viiffff')}}}(FTEC.evcb.mouse, 0, false, event.movementX, event.movementY, 0, 0);
|
||||
{{{makeDynCall('viiffff','FTEC.evcb.mouse')}}}(0, false, event.movementX, event.movementY, 0, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
var rect = Module['canvas'].getBoundingClientRect();
|
||||
{{{makeDynCall('viiffff')}}}(FTEC.evcb.mouse, 0, true, (event.clientX - rect.left)*(Module['canvas'].width/rect.width), (event.clientY - rect.top)*(Module['canvas'].height/rect.height), 0, 0);
|
||||
{{{makeDynCall('viiffff','FTEC.evcb.mouse')}}}(0, true, (event.clientX - rect.left)*(Module['canvas'].width/rect.width), (event.clientY - rect.top)*(Module['canvas'].height/rect.height), 0, 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -187,7 +187,7 @@ mergeInto(LibraryManager.library,
|
|||
//so lets spam requests for it
|
||||
if (!document.fullscreenElement)
|
||||
if (FTEC.evcb.wantfullscreen != 0)
|
||||
if ({{{makeDynCall('i')}}}(FTEC.evcb.wantfullscreen))
|
||||
if ({{{makeDynCall('i','FTEC.evcb.wantfullscreen')}}}())
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -214,7 +214,7 @@ mergeInto(LibraryManager.library,
|
|||
case 'mouseup':
|
||||
if (FTEC.evcb.button != 0)
|
||||
{
|
||||
{{{makeDynCall('viii')}}}(FTEC.evcb.button, 0, event.type=='mousedown', event.button);
|
||||
{{{makeDynCall('viii','FTEC.evcb.button')}}}(0, event.type=='mousedown', event.button);
|
||||
event.preventDefault();
|
||||
}
|
||||
break;
|
||||
|
@ -222,7 +222,7 @@ mergeInto(LibraryManager.library,
|
|||
case 'wheel':
|
||||
if (FTEC.evcb.button != 0)
|
||||
{
|
||||
{{{makeDynCall('viii')}}}(FTEC.evcb.button, 0, 2, event.deltaY);
|
||||
{{{makeDynCall('viii','FTEC.evcb.button')}}}(0, 2, event.deltaY);
|
||||
event.preventDefault();
|
||||
}
|
||||
break;
|
||||
|
@ -230,16 +230,16 @@ mergeInto(LibraryManager.library,
|
|||
if (FTEC.evcb.button != 0)
|
||||
{
|
||||
for (var i = 0; i < 8; i++)
|
||||
{{{makeDynCall('viii')}}}(FTEC.evcb.button, 0, false, i);
|
||||
{{{makeDynCall('viii','FTEC.evcb.button')}}}(0, false, i);
|
||||
}
|
||||
if (FTEC.pointerislocked == -1)
|
||||
FTEC.pointerislocked = 0;
|
||||
break;
|
||||
case 'focus':
|
||||
case 'blur':
|
||||
{{{makeDynCall('iiiii')}}}(FTEC.evcb.key, 0, false, 16, 0); //shift
|
||||
{{{makeDynCall('iiiii')}}}(FTEC.evcb.key, 0, false, 17, 0); //alt
|
||||
{{{makeDynCall('iiiii')}}}(FTEC.evcb.key, 0, false, 18, 0); //ctrl
|
||||
{{{makeDynCall('iiiii','FTEC.evcb.key')}}}(0, false, 16, 0); //shift
|
||||
{{{makeDynCall('iiiii','FTEC.evcb.key')}}}(0, false, 17, 0); //alt
|
||||
{{{makeDynCall('iiiii','FTEC.evcb.key')}}}(0, false, 18, 0); //ctrl
|
||||
if (FTEC.pointerislocked == -1)
|
||||
FTEC.pointerislocked = 0;
|
||||
break;
|
||||
|
@ -248,8 +248,8 @@ mergeInto(LibraryManager.library,
|
|||
{
|
||||
if (event.charCode >= 122 && event.charCode <= 123) //no f11/f12
|
||||
break;
|
||||
{{{makeDynCall('iiiii')}}}(FTEC.evcb.key, 0, 1, 0, event.charCode);
|
||||
{{{makeDynCall('iiiii')}}}(FTEC.evcb.key, 0, 0, 0, event.charCode);
|
||||
{{{makeDynCall('iiiii','FTEC.evcb.key')}}}(0, 1, 0, event.charCode);
|
||||
{{{makeDynCall('iiiii','FTEC.evcb.key')}}}(0, 0, 0, event.charCode);
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
}
|
||||
|
@ -260,7 +260,7 @@ mergeInto(LibraryManager.library,
|
|||
//we don't steal that because its impossible to leave it again once used.
|
||||
if (FTEC.evcb.key != 0 && event.keyCode != 122)
|
||||
{
|
||||
if ({{{makeDynCall('iiiii')}}}(FTEC.evcb.key, 0, event.type=='keydown', event.keyCode, 0))
|
||||
if ({{{makeDynCall('iiiii','FTEC.evcb.key')}}}(0, event.type=='keydown', event.keyCode, 0))
|
||||
event.preventDefault();
|
||||
}
|
||||
break;
|
||||
|
@ -274,13 +274,13 @@ mergeInto(LibraryManager.library,
|
|||
{
|
||||
var t = touches[i];
|
||||
if (FTEC.evcb.mouse)
|
||||
{{{makeDynCall('viiffff')}}}(FTEC.evcb.mouse, t.identifier+1, true, t.pageX, t.pageY, 0, Math.sqrt(t.radiusX*t.radiusX+t.radiusY*t.radiusY));
|
||||
{{{makeDynCall('viiffff','FTEC.evcb.mouse')}}}(t.identifier+1, true, t.pageX, t.pageY, 0, Math.sqrt(t.radiusX*t.radiusX+t.radiusY*t.radiusY));
|
||||
if (FTEC.evcb.button)
|
||||
{
|
||||
if (event.type == 'touchstart')
|
||||
{{{makeDynCall('viii')}}}(FTEC.evcb.button, t.identifier+1, 1, 0);
|
||||
{{{makeDynCall('viii','FTEC.evcb.button')}}}(t.identifier+1, 1, 0);
|
||||
else if (event.type != 'touchmove')
|
||||
{{{makeDynCall('viii')}}}(FTEC.evcb.button, t.identifier+1, 0, 0);
|
||||
{{{makeDynCall('viii','FTEC.evcb.button')}}}(t.identifier+1, 0, 0);
|
||||
}
|
||||
}
|
||||
event.preventDefault();
|
||||
|
@ -317,10 +317,10 @@ mergeInto(LibraryManager.library,
|
|||
delete FTEH.gamepads[gp.index];
|
||||
if (FTEC.evcb.jaxis) //try and clear out the axis when released.
|
||||
for (var j = 0; j < 6; j+=1)
|
||||
{{{makeDynCall('viifi')}}}(FTEC.evcb.jaxis, gp.index, j, 0, true);
|
||||
{{{makeDynCall('viifi','FTEC.evcb.jaxis')}}}(gp.index, j, 0, true);
|
||||
if (FTEC.evcb.jbutton) //try and clear out the axis when released.
|
||||
for (var j = 0; j < 32+4; j+=1)
|
||||
{{{makeDynCall('viiii')}}}(FTEC.evcb.jbutton, gp.index, j, 0, true);
|
||||
{{{makeDynCall('viiii','FTEC.evcb.jbutton')}}}(gp.index, j, 0, true);
|
||||
console.log("Gamepad disconnected from index %d: %s", gp.index, gp.id);
|
||||
break;
|
||||
case 'pointerlockerror':
|
||||
|
@ -390,11 +390,11 @@ mergeInto(LibraryManager.library,
|
|||
if (b.lastframe != p)
|
||||
{ //cache it to avoid spam
|
||||
b.lastframe = p;
|
||||
{{{makeDynCall('viiii')}}}(FTEC.evcb.jbutton, gp.index, j, p, gp.mapping=="standard");
|
||||
{{{makeDynCall('viiii','FTEC.evcb.jbutton')}}}(gp.index, j, p, gp.mapping=="standard");
|
||||
}
|
||||
}
|
||||
for (var j = 0; j < gp.axes.length; j+=1)
|
||||
{{{makeDynCall('viifi')}}}(FTEC.evcb.jaxis, gp.index, j, gp.axes[j], gp.mapping=="standard");
|
||||
{{{makeDynCall('viifi','FTEC.evcb.jaxis')}}}(gp.index, j, gp.axes[j], gp.mapping=="standard");
|
||||
}
|
||||
},
|
||||
emscriptenfte_setupcanvas__deps: ['$FTEC', '$Browser', 'emscriptenfte_buf_createfromarraybuf'],
|
||||
|
@ -477,7 +477,7 @@ mergeInto(LibraryManager.library,
|
|||
Browser.setCanvasSize(rect.width, rect.height, false);
|
||||
}
|
||||
if (FTEC.evcb.resize != 0)
|
||||
{{{makeDynCall('vii')}}}(FTEC.evcb.resize, Module['canvas'].width, Module['canvas'].height);
|
||||
{{{makeDynCall('vii','FTEC.evcb.resize')}}}(Module['canvas'].width, Module['canvas'].height);
|
||||
};
|
||||
window.onresize();
|
||||
|
||||
|
@ -635,7 +635,7 @@ mergeInto(LibraryManager.library,
|
|||
for (i = 0; i < c; i++)
|
||||
{
|
||||
stringToUTF8(n[i], ctx, sz);
|
||||
{{{makeDynCall('vii')}}}(cb, ctx, FTEH.f[n[i]].l);
|
||||
{{{makeDynCall('vii','cb')}}}(ctx, FTEH.f[n[i]].l);
|
||||
}
|
||||
},
|
||||
emscriptenfte_buf_pushtolocalstore : function(handle)
|
||||
|
@ -835,7 +835,7 @@ mergeInto(LibraryManager.library,
|
|||
var stringlen = (stringdata.length*3)+1;
|
||||
var dataptr = _malloc(stringlen);
|
||||
stringToUTF8(stringdata, dataptr, stringlen);
|
||||
{{{makeDynCall('viiii')}}}(callback, ctxp,ctxi,evtype,dataptr);
|
||||
{{{makeDynCall('viiii','callback')}}}(ctxp,ctxi,evtype,dataptr);
|
||||
_free(dataptr);
|
||||
}
|
||||
};
|
||||
|
@ -981,7 +981,7 @@ mergeInto(LibraryManager.library,
|
|||
catch(e)
|
||||
{
|
||||
if (onerror)
|
||||
{{{makeDynCall('vii')}}}(onerror, ctx, 404);
|
||||
{{{makeDynCall('vii','onerror')}}}(ctx, 404);
|
||||
return;
|
||||
}
|
||||
http.responseType = 'arraybuffer';
|
||||
|
@ -992,12 +992,12 @@ mergeInto(LibraryManager.library,
|
|||
if (http.status == 200)
|
||||
{
|
||||
if (onload)
|
||||
{{{makeDynCall('vii')}}}(onload, ctx, _emscriptenfte_buf_createfromarraybuf(http.response));
|
||||
{{{makeDynCall('vii','onload')}}}(ctx, _emscriptenfte_buf_createfromarraybuf(http.response));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (onerror)
|
||||
{{{makeDynCall('vii')}}}(onerror, ctx, http.status);
|
||||
{{{makeDynCall('vii','onerror')}}}(ctx, http.status);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -1005,13 +1005,13 @@ mergeInto(LibraryManager.library,
|
|||
{
|
||||
//console.log("onerror: " + _url);
|
||||
if (onerror)
|
||||
{{{makeDynCall('vii')}}}(onerror, ctx, 0);
|
||||
{{{makeDynCall('vii','onerror')}}}(ctx, 0);
|
||||
};
|
||||
|
||||
http.onprogress = function(e)
|
||||
{
|
||||
if (onprogress)
|
||||
{{{makeDynCall('viii')}}}(onprogress, ctx, e.loaded, e.total);
|
||||
{{{makeDynCall('viii','onprogress')}}}(ctx, e.loaded, e.total);
|
||||
};
|
||||
|
||||
try //ffs
|
||||
|
@ -1135,7 +1135,7 @@ mergeInto(LibraryManager.library,
|
|||
let stringlen = (text.length*3)+1;
|
||||
let dataptr = _malloc(stringlen);
|
||||
stringToUTF8(text, dataptr, stringlen);
|
||||
{{{makeDynCall('vii')}}}(callback, ctx, dataptr);
|
||||
{{{makeDynCall('vii','callback')}}}(ctx, dataptr);
|
||||
_free(dataptr);
|
||||
}catch(e){
|
||||
}
|
||||
|
|
|
@ -397,7 +397,7 @@ QUAKE3FILES=$(BOTLIBFILES) \
|
|||
quake3/svq3_game.c \
|
||||
quake3/q3common.c
|
||||
$(PLUG_PREFIX)quake3$(PLUG_NATIVE_EXT): ${QUAKE3FILES}
|
||||
$(CC) $(BASE_CFLAGS) $(CFLAGS) -DFTEPLUGIN -DBOTLIB -DBOTLIB_STATIC -o $@ -shared $(PLUG_CFLAGS) $^ $(PLUG_DEFFILE) $(PLUG_LDFLAGS_ZLIB) $(PLUG_LDFLAGS)
|
||||
$(CC) $(BASE_CFLAGS) $(CFLAGS) -DFTEPLUGIN -DMULTITHREAD -DBOTLIB -DBOTLIB_STATIC -o $@ -shared $(PLUG_CFLAGS) $^ $(PLUG_DEFFILE) $(PLUG_LDFLAGS_ZLIB) $(PLUG_LDFLAGS)
|
||||
$(call EMBEDMETA,quake3,$@,Quake3 Compat,Quake3 Gamecode Compatibility)
|
||||
NATIVE_PLUGINS+=quake3
|
||||
|
||||
|
|
|
@ -833,8 +833,8 @@ static qintptr_t CG_SystemCalls(void *offset, quintptr_t mask, qintptr_t fn, con
|
|||
{
|
||||
if (mod->loadstate == MLS_NOTLOADED)
|
||||
scenefuncs->LoadModel(mod->publicname, MLV_SILENTSYNC);
|
||||
if (mod->loadstate == MLS_LOADING)
|
||||
COM_WorkerPartialSync(mod, &mod->loadstate, MLS_LOADING);
|
||||
if (mod->loadstate == MLS_LOADING && threadfuncs)
|
||||
threadfuncs->WaitForCompletion(mod, &mod->loadstate, MLS_LOADING);
|
||||
if (mod->loadstate != MLS_LOADED)
|
||||
{
|
||||
memset(results, 0, sizeof(*results));
|
||||
|
@ -905,8 +905,8 @@ static qintptr_t CG_SystemCalls(void *offset, quintptr_t mask, qintptr_t fn, con
|
|||
model_t *mod = scenefuncs->ModelFromId(arg[0]);
|
||||
if (mod)
|
||||
{
|
||||
if (mod->loadstate == MLS_LOADING)
|
||||
COM_WorkerPartialSync(mod, &mod->loadstate, MLS_LOADING);
|
||||
if (mod->loadstate == MLS_LOADING && threadfuncs)
|
||||
threadfuncs->WaitForCompletion(mod, &mod->loadstate, MLS_LOADING);
|
||||
|
||||
VectorCopy(mod->mins, ((float*)VM_POINTER(arg[1])));
|
||||
VectorCopy(mod->maxs, ((float*)VM_POINTER(arg[2])));
|
||||
|
|
|
@ -9,6 +9,7 @@ plugclientfuncs_t *clientfuncs;
|
|||
plugmsgfuncs_t *msgfuncs;
|
||||
plugworldfuncs_t *worldfuncs;
|
||||
plugmasterfuncs_t *masterfuncs;
|
||||
plugthreadfuncs_t *threadfuncs;
|
||||
|
||||
#ifndef STATIC_Q3
|
||||
double realtime;
|
||||
|
@ -1722,8 +1723,9 @@ qboolean Plug_Init(void)
|
|||
fsfuncs = plugfuncs->GetEngineInterface(plugfsfuncs_name, sizeof(*fsfuncs));
|
||||
msgfuncs = plugfuncs->GetEngineInterface(plugmsgfuncs_name, sizeof(*msgfuncs));
|
||||
worldfuncs = plugfuncs->GetEngineInterface(plugworldfuncs_name, sizeof(*worldfuncs));
|
||||
threadfuncs = plugfuncs->GetEngineInterface(plugthreadfuncs_name, sizeof(*threadfuncs));
|
||||
|
||||
if (!vmfuncs || !fsfuncs || !msgfuncs || !worldfuncs)
|
||||
if (!vmfuncs || !fsfuncs || !msgfuncs || !worldfuncs/* || !threadfuncs -- checked on use*/)
|
||||
{
|
||||
Con_Printf("Engine functionality missing, cannot enable q3 gamecode support.\n");
|
||||
return false;
|
||||
|
@ -1745,7 +1747,7 @@ qboolean Plug_Init(void)
|
|||
clientfuncs = plugfuncs->GetEngineInterface(plugclientfuncs_name, sizeof(*clientfuncs));
|
||||
audiofuncs = plugfuncs->GetEngineInterface(plugaudiofuncs_name, sizeof(*audiofuncs));
|
||||
masterfuncs = plugfuncs->GetEngineInterface(plugmasterfuncs_name, sizeof(*masterfuncs));
|
||||
if (drawfuncs && scenefuncs && inputfuncs && audiofuncs && masterfuncs && clientfuncs)
|
||||
if (drawfuncs && scenefuncs && inputfuncs && clientfuncs && audiofuncs && masterfuncs)
|
||||
UI_Init();
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -17,6 +17,7 @@ extern plugq3vmfuncs_t *vmfuncs;
|
|||
extern plugfsfuncs_t *fsfuncs;
|
||||
extern plugmsgfuncs_t *msgfuncs;
|
||||
extern plugworldfuncs_t *worldfuncs;
|
||||
extern plugthreadfuncs_t *threadfuncs;
|
||||
|
||||
extern cvar_t *sv_maxclients;
|
||||
extern cvar_t *cl_shownet_ptr, *cl_c2sdupe_ptr, *cl_nodelta_ptr;
|
||||
|
|
Loading…
Reference in a new issue