/*! * \ingroup light */ Lib3dsBool lib3ds_light_read(Lib3dsLight *light, Lib3dsIo *io) { Lib3dsChunk c; Lib3dsWord chunk; if (!lib3ds_chunk_read_start(&c, LIB3DS_N_DIRECT_LIGHT, io)) { return(LIB3DS_FALSE); } { int i; for (i=0; i<3; ++i) { light->position[i]=lib3ds_io_read_float(io); } } lib3ds_chunk_read_tell(&c, io); while ((chunk=lib3ds_chunk_read_next(&c, io))!=0) { switch (chunk) { case LIB3DS_COLOR_F: { int i; for (i=0; i<3; ++i) { light->color[i]=lib3ds_io_read_float(io); } } break; case LIB3DS_DL_OFF: { light->off=LIB3DS_TRUE; } break; case LIB3DS_DL_OUTER_RANGE: { light->outer_range=lib3ds_io_read_float(io); } break; case LIB3DS_DL_INNER_RANGE: { light->inner_range=lib3ds_io_read_float(io); } break; case LIB3DS_DL_MULTIPLIER: { light->multiplier=lib3ds_io_read_float(io); } break; case LIB3DS_DL_EXCLUDE: { /* FIXME: */ lib3ds_chunk_unknown(chunk); } case LIB3DS_DL_ATTENUATE: { light->attenuation=lib3ds_io_read_float(io); } break; case LIB3DS_DL_SPOTLIGHT: { lib3ds_chunk_read_reset(&c, io); if (!spotlight_read(light, io)) { return(LIB3DS_FALSE); } } break; default: lib3ds_chunk_unknown(chunk); } } lib3ds_chunk_read_end(&c, io); return(LIB3DS_TRUE); }
void lib3ds_light_read(Lib3dsLight *light, Lib3dsIo *io) { Lib3dsChunk c; uint16_t chunk; lib3ds_chunk_read_start(&c, CHK_N_DIRECT_LIGHT, io); { int i; for (i = 0; i < 3; ++i) { light->position[i] = lib3ds_io_read_float(io); } } lib3ds_chunk_read_tell(&c, io); while ((chunk = lib3ds_chunk_read_next(&c, io)) != 0) { switch (chunk) { case CHK_COLOR_F: { int i; for (i = 0; i < 3; ++i) { light->color[i] = lib3ds_io_read_float(io); } break; } case CHK_DL_OFF: light->off = TRUE; break; case CHK_DL_OUTER_RANGE: light->outer_range = lib3ds_io_read_float(io); break; case CHK_DL_INNER_RANGE: light->inner_range = lib3ds_io_read_float(io); break; case CHK_DL_MULTIPLIER: light->multiplier = lib3ds_io_read_float(io); break; case CHK_DL_EXCLUDE: { /* FIXME: */ lib3ds_chunk_unknown(chunk, io); break; } case CHK_DL_ATTENUATE: light->attenuation = lib3ds_io_read_float(io); break; case CHK_DL_SPOTLIGHT: { lib3ds_chunk_read_reset(&c, io); spotlight_read(light, io); break; } default: lib3ds_chunk_unknown(chunk, io); } } lib3ds_chunk_read_end(&c, io); }