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 GSLogDebug
}; };
GSDECL void GSLog(int level, const char* fmt, ...); GSDECL void GSLog(GSEngine engine, int level, const char* fmt, ...);
#ifdef __cplusplus #ifdef __cplusplus
} }

View file

@ -11,6 +11,7 @@ extern "C" {
#define GSMathPi 3.14159265358979323846 #define GSMathPi 3.14159265358979323846
GSDECL void GSMathCross3(GSVector3 r, GSVector3 v0, GSVector3 v1); GSDECL void GSMathCross3(GSVector3 r, GSVector3 v0, GSVector3 v1);
GSDECL GSNumber GSMathInner3(GSVector3 v0, GSVector3 v1);
GSDECL void GSMathNormalize3(GSVector3 vec); GSDECL void GSMathNormalize3(GSVector3 vec);
GSDECL void GSMathSubtract3(GSVector3 r, GSVector3 v0, GSVector3 v1); GSDECL void GSMathSubtract3(GSVector3 r, GSVector3 v0, GSVector3 v1);
GSDECL void GSMathAdd3(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 { struct _GSResource {
GSEngine engine;
GSFile file; GSFile file;
}; };
#endif #endif

View file

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

View file

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

View file

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

View file

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

View file

@ -1,6 +1,6 @@
#include <GearSrc/Log.h> #include <GearSrc/Log.h>
void GSLog(int level, const char* fmt, ...) { void GSLog(GSEngine engine, int level, const char* fmt, ...) {
va_list va; va_list va;
FILE* out = stdout; 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]; 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) { void GSMathNormalize3(GSVector3 vec) {
GSNumber l = 0; GSNumber l = 0;
int i; int i;

View file

@ -270,7 +270,7 @@ GSModel GSModelOpen(GSEngine engine, const char* path) {
GSEngineUnregisterResource(engine, "model-ws"); 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 */ /* TODO: check for animation */
if(gl != NULL) { if(gl != NULL) {

View file

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

View file

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