update GSLog

This commit is contained in:
Nishi 2026-01-25 13:35:09 +09:00
commit a489f54814
Signed by: nishi
GPG key ID: 27EF69B208EB9343
12 changed files with 43 additions and 29 deletions

View file

@ -15,7 +15,7 @@ enum GSLogLevel {
GSLogDebug
};
GSDECL void GSLog(int level, const char* fmt, ...);
GSDECL void GSLog(GSEngine engine, int level, const char* fmt, ...);
#ifdef __cplusplus
}

View file

@ -11,6 +11,7 @@ extern "C" {
#define GSMathPi 3.14159265358979323846
GSDECL void GSMathCross3(GSVector3 r, GSVector3 v0, GSVector3 v1);
GSDECL GSNumber GSMathInner3(GSVector3 v0, GSVector3 v1);
GSDECL void GSMathNormalize3(GSVector3 vec);
GSDECL void GSMathSubtract3(GSVector3 r, GSVector3 v0, GSVector3 v1);
GSDECL void GSMathAdd3(GSVector3 r, GSVector3 v0, GSVector3 v1);

View file

@ -202,6 +202,8 @@ struct _GSFile {
};
struct _GSResource {
GSEngine engine;
GSFile file;
};
#endif

View file

@ -68,7 +68,7 @@ GSClient GSClientCreate(GSEngine engine) {
}
}
GSLog(GSLogInfo, "Created client");
GSLog(engine, GSLogInfo, "Created client");
return client;
}
@ -79,9 +79,9 @@ void GSClientDestroy(GSClient client) {
GSGLDestroy(client->gl);
free(client);
GSLog(client->engine, GSLogInfo, "Destroyed client");
GSLog(GSLogInfo, "Destroyed client");
free(client);
}
static void scene(GSClient client) {

View file

@ -14,7 +14,7 @@ void GSInit(void) {
GSVersionGet(&version);
GSLog(GSLogInfo, "GearSrc Engine %s", version.string);
GSLog(NULL, GSLogInfo, "GearSrc Engine %s", version.string);
}
GSBool GSEngineRegisterResource(GSEngine engine, const char* name, const char* path) {
@ -22,7 +22,7 @@ GSBool GSEngineRegisterResource(GSEngine engine, const char* name, const char* p
if((resource = GSResourceOpen(engine, path)) != NULL) {
shput(engine->resource, name, resource);
GSLog(GSLogInfo, "Registered resource %s as %s", path, name);
GSLog(engine, GSLogInfo, "Registered resource %s as %s", path, name);
return GSTrue;
}
@ -36,7 +36,7 @@ void GSEngineUnregisterResource(GSEngine engine, const char* name) {
if(ind != -1) {
GSResourceClose(engine->resource[ind].value);
GSLog(GSLogInfo, "Unregistered resource %s", name);
GSLog(engine, GSLogInfo, "Unregistered resource %s", name);
shdel(engine->resource, name);
}
@ -65,7 +65,7 @@ GSEngine GSEngineCreate(GSEngineParam* param) {
GSEngineRegisterResource(engine, "game", "game.gsp");
if(engine != NULL && param->client && (engine->client = GSClientCreate(engine)) == NULL) {
GSLog(GSLogError, "Failed to create client");
GSLog(engine, GSLogError, "Failed to create client");
GSEngineDestroy(engine);
@ -73,7 +73,7 @@ GSEngine GSEngineCreate(GSEngineParam* param) {
}
if(engine != NULL && param->server && (engine->server = GSServerCreate(engine)) == NULL) {
GSLog(GSLogError, "Failed to create server");
GSLog(engine, GSLogError, "Failed to create server");
GSEngineDestroy(engine);
@ -81,7 +81,7 @@ GSEngine GSEngineCreate(GSEngineParam* param) {
}
if(engine == NULL) {
GSLog(GSLogError, "Failed to create engine");
GSLog(engine, GSLogError, "Failed to create engine");
}
return engine;
@ -121,8 +121,8 @@ void GSEngineLoop(GSEngine engine) {
long wait = 1000 / tps;
if(engine->param->sleep == NULL || engine->param->get_tick == NULL) {
GSLog(GSLogWarn, "sleep and/or get_tick parameter are missing!");
GSLog(GSLogWarn, "This will result game to be crazy fast!!!");
GSLog(engine, GSLogWarn, "sleep and/or get_tick parameter are missing!");
GSLog(engine, GSLogWarn, "This will result game to be crazy fast!!!");
} else {
t = engine->param->get_tick();

View file

@ -20,7 +20,7 @@ GSFile GSFileOpen(GSEngine engine, const char* path) {
file->size = ftell(file->fp);
fseek(file->fp, 0, SEEK_SET);
GSLog(GSLogInfo, "Opened %s", path);
GSLog(engine, GSLogInfo, "Opened %s", path);
return file;
}
@ -37,7 +37,7 @@ GSFile GSFileOpen(GSEngine engine, const char* path) {
if((file->data = GSResourceGet(engine->resource[i].value, nam, &file->size)) != NULL) {
free(s);
GSLog(GSLogInfo, "Opened %s", path);
GSLog(engine, GSLogInfo, "Opened %s", path);
return file;
}
break;
@ -46,7 +46,7 @@ GSFile GSFileOpen(GSEngine engine, const char* path) {
}
free(s);
GSLog(GSLogError, "Could not open %s", path);
GSLog(engine, GSLogError, "Could not open %s", path);
GSFileClose(file);
return NULL;
}

View file

@ -3,7 +3,7 @@
#include <GearSrc/File.h>
#include <GearSrc/Log.h>
static void err(const char* path, GLuint shader) {
static void err(GSEngine engine, const char* path, GLuint shader) {
GLint len, ret;
char* e;
@ -14,7 +14,7 @@ static void err(const char* path, GLuint shader) {
glGetShaderInfoLog(shader, len, &ret, e);
GSLog(GSLogError, "%s: %s\n", path, e);
GSLog(engine, GSLogError, "%s: %s\n", path, e);
free(e);
}
@ -66,7 +66,7 @@ GSBool GSGLShaderPrepare(GSGL gl, GLuint* shader, const char* vs, const char* fs
glCompileShader(vsi);
glGetShaderiv(vsi, GL_COMPILE_STATUS, &st);
if(!st) {
err(vs, vsi);
err(gl->engine, vs, vsi);
glDeleteShader(vsi);
glDeleteShader(fsi);
@ -78,7 +78,7 @@ GSBool GSGLShaderPrepare(GSGL gl, GLuint* shader, const char* vs, const char* fs
glCompileShader(fsi);
glGetShaderiv(fsi, GL_COMPILE_STATUS, &st);
if(!st) {
err(fs, fsi);
err(gl->engine, fs, fsi);
glDeleteShader(vsi);
glDeleteShader(fsi);

View file

@ -1,6 +1,6 @@
#include <GearSrc/Log.h>
void GSLog(int level, const char* fmt, ...) {
void GSLog(GSEngine engine, int level, const char* fmt, ...) {
va_list va;
FILE* out = stdout;

View file

@ -6,6 +6,15 @@ void GSMathCross3(GSVector3 r, GSVector3 v0, GSVector3 v1) {
r[2] = v0[0] * v1[1] - v0[1] * v1[0];
}
GSNumber GSMathInner3(GSVector3 v0, GSVector3 v1) {
GSNumber r = 0;
int i;
for(i = 0; i < 3; i++) r += v0[i] * v1[i];
return r;
}
void GSMathNormalize3(GSVector3 vec) {
GSNumber l = 0;
int i;

View file

@ -270,7 +270,7 @@ GSModel GSModelOpen(GSEngine engine, const char* path) {
GSEngineUnregisterResource(engine, "model-ws");
GSLog(GSLogInfo, "Opened model %s, %d vertexes, %d faces", path, arrlen(model->vertex), arrlen(model->face));
GSLog(engine, GSLogInfo, "Opened model %s, %d vertexes, %d faces", path, arrlen(model->vertex), arrlen(model->face));
/* TODO: check for animation */
if(gl != NULL) {

View file

@ -39,6 +39,8 @@ GSResource GSResourceOpen(GSEngine engine, const char* path) {
memset(resource, 0, sizeof(*resource));
resource->engine = engine;
if((resource->file = GSFileOpen(engine, path)) == NULL) {
GSResourceClose(resource);
return NULL;
@ -50,7 +52,7 @@ GSResource GSResourceOpen(GSEngine engine, const char* path) {
}
if(memcmp(sig, res_sig, 4) != 0) {
GSLog(GSLogError, "%s: Resource has wrong signature", path);
GSLog(engine, GSLogError, "%s: Resource has wrong signature", path);
GSResourceClose(resource);
return NULL;
}
@ -58,7 +60,7 @@ GSResource GSResourceOpen(GSEngine engine, const char* path) {
return resource;
}
int find_entry(GSFile f, const char* name, int max, GSU32* totsz, GSU32* actsz, GSU32* cmpsz, GSU32* seekpos) {
int find_entry(GSEngine engine, GSFile f, const char* name, int max, GSU32* totsz, GSU32* actsz, GSU32* cmpsz, GSU32* seekpos) {
GSU32 crc = GSEndianSwapU32BE(GSCRC32((void*)name, strlen(name)));
int i;
@ -101,7 +103,7 @@ int find_entry(GSFile f, const char* name, int max, GSU32* totsz, GSU32* actsz,
if(totsz != NULL) *totsz = tsz;
if(crc == t && strcmp(fn, name) == 0) {
GSLog(GSLogDebug, "Directory %s/ found", fn);
GSLog(engine, GSLogDebug, "Directory %s/ found", fn);
free(fn);
return n;
}
@ -128,7 +130,7 @@ int find_entry(GSFile f, const char* name, int max, GSU32* totsz, GSU32* actsz,
*seekpos = GSEndianSwapU32BE(*seekpos);
if(crc == t && strcmp(fn, name) == 0) {
GSLog(GSLogDebug, "File %s found", fn);
GSLog(engine, GSLogDebug, "File %s found", fn);
free(fn);
return -2;
}
@ -158,7 +160,7 @@ void* GSResourceGet(GSResource resource, const char* name, unsigned int* size) {
if(s != NULL) s[0] = 0;
m = find_entry(resource->file, f, m, strlen(f) == 0 ? &totsz : NULL, &actsz, &cmpsz, &seekpos);
m = find_entry(resource->engine, resource->file, f, m, strlen(f) == 0 ? &totsz : NULL, &actsz, &cmpsz, &seekpos);
if(m == -1) break;
if(m == -2) {
unsigned char* cmp = malloc(cmpsz);

View file

@ -9,15 +9,15 @@ GSServer GSServerCreate(GSEngine engine) {
server->engine = engine;
GSLog(GSLogInfo, "Created server");
GSLog(engine, GSLogInfo, "Created server");
return server;
}
void GSServerDestroy(GSServer server) {
free(server);
GSLog(server->engine, GSLogInfo, "Destroyed server");
GSLog(GSLogInfo, "Destroyed server");
free(server);
}
void GSServerStep(GSServer server) {