Пример #1
0
struct model *luaL_checkmodel(lua_State *L, int index)
{
	int n, i;
	struct mesh *group;
	vector offset;
	struct model *m;

	n = lua_objlen(L, index);
	if (n <= 0)
	{
		luaL_error(L, "invalid table length at index %d", index);
	}
	m = model_create(NULL);
	for (i=0; i<n; i++)
	{
		lua_getfieldi(L, index, i+1);
		group = luaL_checkmesh(L, -1);
		lua_getfield(L, -1, "offset");
		if (lua_isvector(L, -1))
			lua_tovector(L, -1, &offset);
		else
			offset.x = offset.y = offset.z = 0.0f;
		lua_pop(L, 2);
		model_addgroup(m, group, &offset);
		mesh_destroy(group);
	}

	return m;
}
Пример #2
0
model_t * model_dummy_create(const char *name)
{
	model_dummy_t *dummy = malloc(sizeof(model_dummy_t));
	if (!dummy)
		return NULL;

	return model_create(model_dummy_exec, model_dummy_delete, name, (void *)dummy);
}
Пример #3
0
} END_TEST


/**
 * The function reset error buffer before the test.
 */
static void test_generic_setup(void)
{
	COLOR_SETUP_START;
	view_generic = view_create(VIEW_NONE);
	model_generic1 = model_create(MODEL_NONE);
	model_generic2 = model_create(MODEL_NONE);
	cntl_generic1 = cntl_create(CNTL_NONE);
	cntl_generic2 = cntl_create(CNTL_NONE);
	error_reset();
	COLOR_SETUP_END;
	return ;
}
Пример #4
0
} END_TEST


/**
 * The function reset error buffer before the test and creates instance of model
 * to run tests over it.
 */
static void model_setup(void) {
	COLOR_SETUP_START;
	model_generic = model_create(MODEL_APPLICATION);

	if ( error_is_error() ) {
		ERROR_LOG();
	}

	COLOR_SETUP_END;
	return ;
}
Пример #5
0
int load_level(const char *filename)
{
	struct mesh *m;
	const char *err;
	int ret;

	DEBUG(1, "game: load_level(\"%s\")\n", filename);
	ret = luaL_dofile(L1, filename);
	if (ret)
	{
		err = lua_tostring(L1, -1);
		ERROR("error while loading level: %s", err);
		lua_pop(L1, 1);
		return 1;
	}
	lua_getfield(L1, -1, "vertices");
	if (!lua_istable(L1, -1))
	{
		ERROR("expected `vertices' field in Lua level data table");
		lua_pop(L1, 2);
		return 1;
	}
	clear_level();
	m = mesh_create();
	mesh_addluaverts(m, L1, -1);
	lua_pop(L1, 1);
	lua_getfield(L1, -1, "faces");
	if (!lua_istable(L1, -1))
	{
		mesh_destroy(m);
		ERROR("expected `faces' field in Lua level data table");
		return 1;
	}
	mesh_addluafaces(m, L1, -1);
	lua_pop(L1, 1);
	lua_setglobal(L1, "level");
	level = model_create(m);
	/* m is no longer needed. */
	mesh_destroy(m);
	gfx_prepmodel(level);
	gfx->set_level(level);

	return 0;
}