
Source code release, imported from: https://www.gamefront.com/games/aliens-vs-predator-3/file/avp-gold-complete-source-code All text files were converted to Unix format.
273 lines
No EOL
4.9 KiB
C++
273 lines
No EOL
4.9 KiB
C++
#ifndef _ltchunk_hpp
|
|
#define _ltchunk_hpp 1
|
|
|
|
#include "chunk.hpp"
|
|
#include "chnktype.hpp"
|
|
|
|
#if InterfaceEngine
|
|
#include "strachnk.hpp"
|
|
#endif
|
|
|
|
#define LOFlag_On 0x00000001
|
|
#define LOFlag_ShadowData 0x00000002
|
|
#define LOFlag_Changed 0x00000004
|
|
#define LOFlag_Calc_Data 0x00000008
|
|
#define LOFlag_Runtime 0x00000010
|
|
#define LOFlag_Invisible 0x00000020
|
|
#define LOFlag_NoPreLight 0x00000040
|
|
|
|
class Environment_Data_Chunk;
|
|
|
|
class Light_Data
|
|
{
|
|
public:
|
|
|
|
int light_number;
|
|
ChunkVectorInt location;
|
|
ChunkMatrix orientation;
|
|
|
|
int brightness;
|
|
int spread;
|
|
int range;
|
|
|
|
int colour;
|
|
|
|
int engine_light_flags;
|
|
int local_light_flags;
|
|
|
|
int pad1;
|
|
int pad2;
|
|
|
|
};
|
|
|
|
|
|
#define PlacedLightType_Standard 0
|
|
#define PlacedLightType_Strobe 1
|
|
#define PlacedLightType_Flicker 2
|
|
|
|
#define PlacedLightOnOff_Standard 0
|
|
#define PlacedLightOnOff_Fade 1
|
|
#define PlacedLightOnOff_Flicker 2
|
|
|
|
#define PlacedLightFlag_On 0x00000001
|
|
#define PlacedLightFlag_SwapColourBright 0x00000002
|
|
#define PlacedLightFlag_NoSpecular 0x00000004
|
|
class Placed_Object_Light_Data
|
|
{
|
|
public:
|
|
|
|
int brightness;
|
|
int spread;
|
|
int range;
|
|
|
|
int up_colour;
|
|
int down_colour;
|
|
|
|
int engine_light_flags;
|
|
int local_light_flags;
|
|
|
|
int fade_up_time;
|
|
int fade_down_time;
|
|
int up_time;
|
|
int down_time;
|
|
int start_time;
|
|
|
|
int light_type;
|
|
int on_off_type;
|
|
int flags;
|
|
|
|
|
|
};
|
|
|
|
class Light_Set_Chunk : public Chunk_With_Children
|
|
{
|
|
public:
|
|
|
|
// for user
|
|
|
|
Light_Set_Chunk (Chunk_With_Children * parent, char * light_set_name);
|
|
Light_Set_Chunk (Chunk_With_Children * const parent,const char *, size_t const);
|
|
|
|
private:
|
|
|
|
friend class Environment_Data_Chunk;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
class Light_Set_Header_Chunk : public Chunk
|
|
{
|
|
public:
|
|
|
|
Light_Set_Header_Chunk (Light_Set_Chunk * parent, char l_set_name[8]);
|
|
Light_Set_Header_Chunk (Chunk_With_Children * parent, const char *, size_t const);
|
|
char light_set_name[8];
|
|
|
|
int pad;
|
|
|
|
size_t size_chunk()
|
|
{
|
|
return (chunk_size = 12 + 8 + 4);
|
|
}
|
|
|
|
void fill_data_block ( char * data_start);
|
|
|
|
private:
|
|
|
|
friend class Light_Set_Chunk;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
class Light_Chunk : public Chunk
|
|
{
|
|
public:
|
|
|
|
Light_Chunk (Light_Set_Chunk * parent, Light_Data & new_light)
|
|
: Chunk (parent, "STDLIGHT"), light (new_light) {}
|
|
|
|
Light_Chunk (Chunk_With_Children * parent, const char *, size_t const);
|
|
|
|
Light_Data light;
|
|
|
|
BOOL light_added_to_module;
|
|
|
|
size_t size_chunk()
|
|
{
|
|
return (chunk_size = 12 + 9 * 4 + 3 * 4 + 9 * 4);
|
|
}
|
|
|
|
void fill_data_block ( char * data_start);
|
|
|
|
#if InterfaceEngine
|
|
AVP_Strategy_Chunk* GetStrategyChunk();
|
|
AVP_Strategy_Chunk* CreateStrategyChunk();
|
|
#endif
|
|
|
|
private:
|
|
|
|
friend class Light_Set_Chunk;
|
|
|
|
|
|
|
|
};
|
|
|
|
//should be a child of an object_chunk
|
|
class Placed_Object_Light_Chunk : public Chunk
|
|
{
|
|
public :
|
|
Placed_Object_Light_Chunk (Chunk_With_Children * parent, Placed_Object_Light_Data & new_light)
|
|
: Chunk (parent, "PLOBJLIT"), light (new_light),num_extra_data(0),extra_data(0) {}
|
|
|
|
Placed_Object_Light_Chunk (Chunk_With_Children * parent, const char *, size_t const);
|
|
|
|
~Placed_Object_Light_Chunk();
|
|
|
|
Placed_Object_Light_Data light;
|
|
int* extra_data;
|
|
int num_extra_data;
|
|
|
|
size_t size_chunk()
|
|
{
|
|
return (chunk_size = 12 +sizeof(Placed_Object_Light_Data) +4 +4*num_extra_data);
|
|
}
|
|
|
|
void fill_data_block ( char * data_start);
|
|
|
|
};
|
|
|
|
|
|
class Shape_Vertex_Intensities_Chunk : public Chunk
|
|
{
|
|
public:
|
|
|
|
Shape_Vertex_Intensities_Chunk(Chunk_With_Children *, char *, int, int *);
|
|
Shape_Vertex_Intensities_Chunk(Chunk_With_Children *, const char *, size_t const);
|
|
~Shape_Vertex_Intensities_Chunk();
|
|
|
|
char light_set_name[8];
|
|
|
|
int pad;
|
|
|
|
int num_vertices;
|
|
|
|
int * intensity_array;
|
|
|
|
size_t size_chunk()
|
|
{
|
|
return (chunk_size = 12 + 8 + 4 + 4 + 4 * num_vertices);
|
|
}
|
|
|
|
void fill_data_block ( char * data_start);
|
|
|
|
private:
|
|
|
|
friend class Object_Chunk;
|
|
|
|
|
|
|
|
};
|
|
|
|
class Lighting_Ambience_Chunk : public Chunk
|
|
{
|
|
public:
|
|
|
|
Lighting_Ambience_Chunk (Light_Set_Chunk * parent, int _ambience)
|
|
: Chunk (parent, "AMBIENCE"), ambience (_ambience)
|
|
{}
|
|
Lighting_Ambience_Chunk (Chunk_With_Children * parent, const char * data, size_t const /*size*/)
|
|
: Chunk (parent, "AMBIENCE"), ambience (*((int *)data))
|
|
{}
|
|
int ambience;
|
|
|
|
size_t size_chunk()
|
|
{
|
|
return (chunk_size = 12 + 4);
|
|
}
|
|
|
|
void fill_data_block ( char * data_start);
|
|
|
|
private:
|
|
|
|
friend class Light_Set_Chunk;
|
|
|
|
|
|
|
|
};
|
|
|
|
#define PSXLightMode 0
|
|
//details of how light data should be altered for different platforms.
|
|
//currently just playstation
|
|
class Light_Scale_Chunk : public Chunk
|
|
{
|
|
public :
|
|
Light_Scale_Chunk(Light_Set_Chunk * parent,int mode);
|
|
Light_Scale_Chunk(Chunk_With_Children* parent,const char* data,size_t);
|
|
|
|
void fill_data_block ( char * data_start);
|
|
size_t size_chunk()
|
|
{
|
|
return (chunk_size = 12 + 44);
|
|
}
|
|
|
|
int LightMode;
|
|
float prelight_multiply;
|
|
int prelight_multiply_above;
|
|
int prelight_add;
|
|
|
|
float runtime_multiply;
|
|
int runtime_multiply_above;
|
|
int runtime_add;
|
|
|
|
|
|
int ApplyPrelightScale(int l);
|
|
int ApplyRuntimeScale(int l);
|
|
|
|
int spare1,spare2,spare3,spare4;
|
|
};
|
|
|
|
#endif |