move skybox
This commit is contained in:
parent
bcefd78599
commit
6e7ba8658b
16 changed files with 22 additions and 110 deletions
|
|
@ -27,7 +27,7 @@ GSClient GSClientCreate(GSEngine engine) {
|
|||
|
||||
client->gl = GSGLCreate(client);
|
||||
|
||||
client->skybox = GSSkyBoxOpen(client, "base:/skybox");
|
||||
client->skybox = GSSkyBoxTry(client, "default");
|
||||
|
||||
GSLog(GSLogInfo, "Created client");
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@
|
|||
#include <GearSrc/Client.h>
|
||||
#include <GearSrc/Server.h>
|
||||
#include <GearSrc/Resource.h>
|
||||
#include <GearSrc/XML.h>
|
||||
#include <GearSrc/String.h>
|
||||
|
||||
#include <stb_ds.h>
|
||||
|
|
@ -21,26 +20,8 @@ void GSInit(void) {
|
|||
int GSEngineRegisterResource(GSEngine engine, const char* name, const char* path) {
|
||||
GSResource resource;
|
||||
if((resource = GSResourceOpen(engine, path)) != NULL) {
|
||||
GSXML xl;
|
||||
char* s = GSStringConcat(name, ":/manifest.xml");
|
||||
int ind;
|
||||
|
||||
shput(engine->resource, name, resource);
|
||||
|
||||
if((xl = GSXMLOpen(engine, s)) == NULL) {
|
||||
free(s);
|
||||
|
||||
GSResourceClose(resource);
|
||||
|
||||
shdel(engine->resource, name);
|
||||
|
||||
return 0;
|
||||
}
|
||||
free(s);
|
||||
|
||||
ind = shgeti(engine->resource, name);
|
||||
engine->resource[ind].xml = xl;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
@ -95,7 +76,6 @@ GSEngine GSEngineCreate(GSEngineParam* param) {
|
|||
void GSEngineDestroy(GSEngine engine) {
|
||||
int i;
|
||||
for(i = 0; i < shlen(engine->resource); i++) {
|
||||
GSXMLClose(engine->resource[i].xml);
|
||||
GSResourceClose(engine->resource[i].value);
|
||||
}
|
||||
shfree(engine->resource);
|
||||
|
|
|
|||
|
|
@ -39,6 +39,26 @@ GSSkyBox GSSkyBoxOpen(GSClient client, const char* base) {
|
|||
return skybox;
|
||||
}
|
||||
|
||||
GSSkyBox GSSkyBoxTry(GSClient client, const char* name){
|
||||
const char* ns[] = {"game", "base"};
|
||||
int i;
|
||||
GSSkyBox sb = NULL;
|
||||
|
||||
for(i = 0; i < 2; i++){
|
||||
char* b = GSStringConcat(ns[i], ":/skybox/");
|
||||
char* s = GSStringConcat(b, name);
|
||||
|
||||
sb = GSSkyBoxOpen(client, s);
|
||||
|
||||
free(s);
|
||||
free(b);
|
||||
|
||||
if(sb != NULL) break;
|
||||
}
|
||||
|
||||
return sb;
|
||||
}
|
||||
|
||||
void GSSkyBoxDraw(GSSkyBox skybox) {
|
||||
GSGL gl = skybox->engine->client->gl;
|
||||
int i;
|
||||
|
|
|
|||
|
|
@ -1,52 +0,0 @@
|
|||
#include <GearSrc/XML.h>
|
||||
|
||||
#include <GearSrc/File.h>
|
||||
|
||||
typedef struct arg {
|
||||
GSEngine engine;
|
||||
const char* path;
|
||||
} arg_t;
|
||||
|
||||
static int driver_open(xemil_t* handle) {
|
||||
arg_t* arg = handle->drv_arg;
|
||||
|
||||
if((handle->drv_opaque = GSFileOpen(arg->engine, arg->path)) == NULL) return 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int driver_read(xemil_t* handle, void* data, int size) {
|
||||
return GSFileRead(handle->drv_opaque, data, size);
|
||||
}
|
||||
|
||||
static void driver_close(xemil_t* handle) {
|
||||
GSFileClose(handle->drv_opaque);
|
||||
}
|
||||
|
||||
static xl_driver_t driver_rec = {
|
||||
driver_open,
|
||||
driver_read,
|
||||
driver_close};
|
||||
static xl_driver_t* driver = &driver_rec;
|
||||
|
||||
GSXML GSXMLOpen(GSEngine engine, const char* path) {
|
||||
arg_t arg;
|
||||
xemil_t* xl;
|
||||
|
||||
arg.engine = engine;
|
||||
arg.path = path;
|
||||
|
||||
xl = xl_open(driver, &arg);
|
||||
if(xl == NULL) return NULL;
|
||||
if(!xl_parse(xl)) {
|
||||
xl_close(xl);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return xl;
|
||||
}
|
||||
|
||||
void GSXMLClose(GSXML xml) {
|
||||
xl_close(xml);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue