1 #ifndef _hierplace_hpp
2 #define _hierplace_hpp 1
3 
4 #include "chunk.hpp"
5 #include "chnktype.hpp"
6 
7 class Placed_Hierarchy_Data_Chunk;
8 
9 class Placed_Hierarchy_Chunk : public Chunk_With_Children
10 {
11 public :
12 
13 	Placed_Hierarchy_Chunk(Chunk_With_Children* parent,const char* _name,int _hierarchy_index,ChunkVectorInt& _location,ChunkQuat& _orientation);
14 	Placed_Hierarchy_Chunk(Chunk_With_Children * const parent,const char* ,const size_t);
15 
16 
get_data_chunk()17 	Placed_Hierarchy_Data_Chunk* get_data_chunk()
18 	{
19 		return (Placed_Hierarchy_Data_Chunk*)lookup_single_child("PLACHIDT");
20 	}
21 };
22 
23 class  Placed_Hierarchy_Data_Chunk : public Chunk
24 {
25 public :
26 	Placed_Hierarchy_Data_Chunk(Chunk_With_Children* parent,const char* , const size_t);
27 	Placed_Hierarchy_Data_Chunk(Chunk_With_Children* parent,const char* _name,int _hierarchy_index,ChunkVectorInt& _location,ChunkQuat& _orientation);
28 	~Placed_Hierarchy_Data_Chunk();
29 
30 	void fill_data_block(char*);
31 	size_t size_chunk();
32 
33 
34 
35 	char* name;
36 
37 	int hierarchy_index;
38 
39 	ChunkVectorInt location;
40 	ChunkQuat	orientation;
41 
42 	ObjectID id;
43 
44 	int num_extra_data;
45 	int* extra_data;
46 
47 
48 };
49 
50 struct Timed_Sound_Description
51 {
52 	int sound_index;
53 	int start_time; //in ms
54 	int end_time; //in ms
55 };
56 
57 
58 #define  HierarchySequenceFlag_Loop 0x00000001
59 #define  HierarchySequenceFlag_InitialSequence 0x00000002
60 #define  HierarchySequenceFlag_Playing 0x00000004
61 class Placed_Hierarchy_Sequence_Chunk : public Chunk
62 {
63 public:
64 	Placed_Hierarchy_Sequence_Chunk(Chunk_With_Children* parent,const char* , const size_t);
65 	Placed_Hierarchy_Sequence_Chunk(Chunk_With_Children* parent,int _index);
66 	~Placed_Hierarchy_Sequence_Chunk();
67 
68 	void fill_data_block(char*);
69 	size_t size_chunk();
70 
71 
72 	int index;
73 	int sequence;
74 	int sub_sequence;
75 	int time; //time to play sequence in ms
76 	int flags;
77 
78 	int sound_list_size;
79 	Timed_Sound_Description* sound_list;
80 
81 
82 	int num_extra_data;
83 	int* extra_data;
84 };
85 
86 
87 #endif
88