1 #ifndef _bh_track_h_
2 #define _bh_track_h_ 1
3 
4 #include "track.h"
5 
6 #ifdef __cplusplus
7 
8 	extern "C" {
9 
10 #endif
11 
12 extern void* TrackObjectBehaveInit(void* bhdata, STRATEGYBLOCK* sbptr);
13 extern void  TrackObjectBehaveFun(STRATEGYBLOCK* sbptr);
14 extern void  TrackObjectIsDamaged(STRATEGYBLOCK *sbPtr, DAMAGE_PROFILE *damage, int multiple);
15 
16 extern int TrackObjectGetSynchData(STRATEGYBLOCK* sbptr);
17 extern void TrackObjectSetSynchData(STRATEGYBLOCK* sbptr,int status);
18 
19 typedef enum track_object_req_states
20 {
21 	track_no_request,
22 	track_request_start,
23 	track_request_stop,
24 	track_request_startforward,
25 	track_request_startbackward,
26 }TRACK_OBJECT_REQUEST_STATE;
27 
28 
29 
30 #ifndef TrackRequestFlag_ActiveForward
31 	#define TrackRequestFlag_ActiveForward 0x00000001
32 	#define TrackRequestFlag_ActiveBackward 0x00000002
33 	#define TrackRequestFlag_OppositeBackward 0x00000004
34 #endif
35 typedef struct track_point_target
36 {
37 
38 	char target_name [SB_NAME_LENGTH];
39 	STRATEGYBLOCK * target_sbptr;
40 	int request;
41 	int flags;
42 
43 }TRACK_POINT_TARGET;
44 
45 typedef struct special_track_point
46 {
47 	int track_point_no;
48 	int num_targets;
49 
50 	TRACK_POINT_TARGET* targets;
51 
52 }SPECIAL_TRACK_POINT;
53 
54 typedef struct track_object_behav_block
55 {
56 	AVP_BEHAVIOUR_TYPE bhvr_type;
57 	BOOL Indestructable;
58 
59 	TRACK_CONTROLLER* to_track;
60 
61 	TRACK_OBJECT_REQUEST_STATE request;
62 
63 	TXACTRLBLK *to_tac;//for objects with anims on them
64 
65 	int num_special_track_points;
66 	SPECIAL_TRACK_POINT* special_track_points;
67 
68 	int destruct_target_request;
69 	char destruct_target_ID[SB_NAME_LENGTH];
70 	STRATEGYBLOCK* destruct_target_sbptr;
71 
72 	int TimeUntilNetSynchAllowed;
73 }TRACK_OBJECT_BEHAV_BLOCK;
74 
75 
76 typedef struct track_object_tools_template
77 {
78 	char nameID[SB_NAME_LENGTH];
79 	int shape_num;
80 
81 	TRACK_CONTROLLER* track;
82 
83 	VECTORCH position;
84 	EULER orientation;
85 
86 	int num_special_track_points;
87 	SPECIAL_TRACK_POINT* special_track_points;
88 
89 
90 	int integrity; // 0-20 (>20 = indestructable)
91 	int destruct_target_request;
92 	char destruct_target_ID[SB_NAME_LENGTH];
93 
94 }TRACK_OBJECT_TOOLS_TEMPLATE;
95 
96 
97 #ifdef __cplusplus
98 
99 	};
100 
101 #endif
102 
103 
104 #endif
105