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