summaryrefslogtreecommitdiff
path: root/3dc/win95/LTCHUNK.HPP
diff options
context:
space:
mode:
authorRebellion Developments <rebellion@nomail>2000-03-16 11:25:00 +0100
committerPatryk Obara <dreamer.tan@gmail.com>2019-08-19 05:45:17 +0200
commit218ca90543758a20ac326e444ca0643174ca7384 (patch)
tree16bfe3e5307f9f515489000f28728224291a0e3b /3dc/win95/LTCHUNK.HPP
Import Aliens vs Predator - Gold (Build 116)
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.
Diffstat (limited to '3dc/win95/LTCHUNK.HPP')
-rw-r--r--3dc/win95/LTCHUNK.HPP273
1 files changed, 273 insertions, 0 deletions
diff --git a/3dc/win95/LTCHUNK.HPP b/3dc/win95/LTCHUNK.HPP
new file mode 100644
index 0000000..2ed6b78
--- /dev/null
+++ b/3dc/win95/LTCHUNK.HPP
@@ -0,0 +1,273 @@
+#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 \ No newline at end of file