#include #include "chunk.hpp" #include "ltchunk.hpp" //macro for helping to force inclusion of chunks when using libraries FORCE_CHUNK_INCLUDE_IMPLEMENT(ltchunk) //////////////////////////////////////////////////////////////////////////////////// //Class Light_Set_Chunk RIF_IMPLEMENT_DYNCREATE("LIGHTSET",Light_Set_Chunk) CHUNK_WITH_CHILDREN_LOADER("LIGHTSET",Light_Set_Chunk) /* Children for Light_Set_Chunk : "LTSETHDR" Light_Set_Header_Chunk "STDLIGHT" Light_Chunk "AMBIENCE" Lighting_Ambience_Chunk "LITSCALE" Light_Scale_Chunk "AVPSTRAT" AVP_Strategy_Chunk */ Light_Set_Chunk::Light_Set_Chunk (Chunk_With_Children * parent, char * light_set_name) : Chunk_With_Children (parent, "LIGHTSET") { new Light_Set_Header_Chunk (this, light_set_name); } //////////////////////////////////////////////////////////////////////////////////// RIF_IMPLEMENT_DYNCREATE("LTSETHDR",Light_Set_Header_Chunk) Light_Set_Header_Chunk::Light_Set_Header_Chunk (Light_Set_Chunk * parent, char l_set_name[8]) : Chunk (parent, "LTSETHDR"), pad (0) { strncpy (light_set_name, l_set_name, 8); } void Light_Set_Header_Chunk::fill_data_block ( char * data_start) { strncpy (data_start, identifier, 8); data_start += 8; *((int *) data_start) = chunk_size; data_start += 4; strncpy (data_start, light_set_name, 8); data_start += 8; *((int *) data_start) = pad; } Light_Set_Header_Chunk::Light_Set_Header_Chunk (Chunk_With_Children * parent, const char * data, size_t const /*size*/) : Chunk (parent, "LTSETHDR") { strncpy (light_set_name, data, 8); data += 8; pad = *((int *) data); } //////////////////////////////////////////////////////////////////////////////////// RIF_IMPLEMENT_DYNCREATE("STDLIGHT",Light_Chunk) void Light_Chunk::fill_data_block ( char * data_start) { strncpy (data_start, identifier, 8); data_start += 8; *((int *) data_start) = chunk_size; data_start += 4; *((int *) data_start) = light.light_number; data_start += 4; *((ChunkVectorInt *) data_start) = light.location; data_start += sizeof(ChunkVectorInt); *((ChunkMatrix *) data_start) = light.orientation; data_start += sizeof(ChunkMatrix); *((int *) data_start) = light.brightness; data_start += 4; *((int *) data_start) = light.spread; data_start += 4; *((int *) data_start) = light.range; data_start += 4; *((int *) data_start) = light.colour; data_start += 4; *((int *) data_start) = light.engine_light_flags; data_start += 4; *((int *) data_start) = light.local_light_flags; data_start += 4; *((int *) data_start) = light.pad1; data_start += 4; *((int *) data_start) = light.pad2; } Light_Chunk::Light_Chunk(Chunk_With_Children * parent, const char * data, size_t const /*size*/) : Chunk (parent, "STDLIGHT") { light.light_number = *((int *) data); data += 4; light.location = *((ChunkVectorInt *) data); data += sizeof(ChunkVectorInt); light.orientation = *((ChunkMatrix *) data); data += sizeof(ChunkMatrix); light.brightness = *((int *) data); data += 4; light.spread = *((int *) data); data += 4; light.range = *((int *) data); data += 4; light.colour = *((int *) data); data += 4; light.engine_light_flags = *((int *) data); data += 4; light.local_light_flags = *((int *) data); data += 4; light.pad1 = *((int *) data); data += 4; light.pad2 = *((int *) data); light_added_to_module = FALSE; } //////////////////////////////////////////////////////////////////////////////////// RIF_IMPLEMENT_DYNCREATE("SHPVTINT",Shape_Vertex_Intensities_Chunk) Shape_Vertex_Intensities_Chunk::Shape_Vertex_Intensities_Chunk (Chunk_With_Children *parent, char *lsn, int num_v, int * i_array) : Chunk (parent, "SHPVTINT"), pad (0), num_vertices(num_v) { strncpy (light_set_name, lsn, 8); intensity_array = new int [num_v]; for (int i=0; i