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