You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
1.5 KiB
78 lines
1.5 KiB
// uniquake.cpp : Defines the exported functions for the DLL.
|
|
//
|
|
|
|
#include "pch.h"
|
|
#include "framework.h"
|
|
#include "uniquake.h"
|
|
|
|
#include "../../code/quakedef.h"
|
|
|
|
typedef struct unity_callbacks_s
|
|
{
|
|
void(__stdcall *DebugLog)(const char *msg);
|
|
void(__stdcall *DebugLogError)(const char *msg);
|
|
void(__stdcall *ApplicationQuit)(int exitCode);
|
|
double(__stdcall *RealtimeSinceStartup)();
|
|
} unity_callbacks_t;
|
|
|
|
const unity_callbacks_t *unity_callbacks;
|
|
|
|
void Sys_Error(char *error, ...)
|
|
{
|
|
va_list argptr;
|
|
char text[1024];
|
|
|
|
va_start(argptr, error);
|
|
vsprintf(text, error, argptr);
|
|
va_end(argptr);
|
|
|
|
unity_callbacks->DebugLogError(text);
|
|
unity_callbacks->ApplicationQuit(1);
|
|
}
|
|
|
|
void Sys_Printf(char *fmt, ...)
|
|
{
|
|
va_list argptr;
|
|
char text[1024];
|
|
|
|
va_start(argptr, fmt);
|
|
vsprintf(text, fmt, argptr);
|
|
va_end(argptr);
|
|
|
|
unity_callbacks->DebugLog(text);
|
|
}
|
|
|
|
void Sys_Quit(void)
|
|
{
|
|
Host_Shutdown();
|
|
unity_callbacks->ApplicationQuit(0);
|
|
}
|
|
|
|
double Sys_FloatTime(void)
|
|
{
|
|
return unity_callbacks->RealtimeSinceStartup();
|
|
}
|
|
|
|
UNIQUAKE_API void Uniquake_Echo(void(__stdcall *DebugLog)(const char *msg), const char *message)
|
|
{
|
|
DebugLog(message);
|
|
}
|
|
|
|
UNIQUAKE_API void Uniquake_Init(const unity_callbacks_t *callbacks, quakeparms_t *parms)
|
|
{
|
|
unity_callbacks = callbacks;
|
|
|
|
COM_InitArgv(parms->argc, parms->argv);
|
|
// TODO winquake writes com_argc/argv back to parms.argc/argv, is this necessary?
|
|
|
|
isDedicated = true;
|
|
|
|
Host_Init(parms);
|
|
}
|
|
|
|
UNIQUAKE_API void Uniquake_Update(float deltaTime)
|
|
{
|
|
// TODO: limit ticrate when running dedicated server
|
|
|
|
Host_Frame(deltaTime);
|
|
}
|