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

// 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);
}