diff options
| author | Steven Fuller <relnev@icculus.org> | 2001-07-01 00:55:22 +0000 |
|---|---|---|
| committer | Patryk Obara <dreamer.tan@gmail.com> | 2019-08-20 02:09:04 +0200 |
| commit | 2186d5f3f95cd74a070a490d899291648d58667a (patch) | |
| tree | 55241a1afa3e1a22e0b6593a8dead0b703800f44 /src/avp/track.h | |
| parent | 218ca90543758a20ac326e444ca0643174ca7384 (diff) | |
Initial revision
Diffstat (limited to 'src/avp/track.h')
| -rw-r--r-- | src/avp/track.h | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/src/avp/track.h b/src/avp/track.h new file mode 100644 index 0000000..25b43b4 --- /dev/null +++ b/src/avp/track.h @@ -0,0 +1,117 @@ +#ifndef track_h +#define track_h 1 + +#ifdef __cplusplus +extern "C" { +#endif + +struct loaded_sound; + +typedef struct track_sound +{ + unsigned long inner_range; + unsigned long outer_range; + int max_volume; + int pitch; + + struct loaded_sound const * sound_loaded; + int activ_no; + int time_left; + + unsigned int loop:1; + unsigned int playing:1; //sound should be playing (if in range) + +} TRACK_SOUND; + +typedef struct track_section_data +{ + QUAT quat_start; //orientations of object relative to pivot + QUAT quat_end; + + VECTORCH pivot_start; //pivot start pos in world space + VECTORCH pivot_travel; + + VECTORCH object_offset; //from pivot + + int time_for_section; //time take for this section in fixed point seconds + + //preprocessed stuff + int omega; + int oneoversinomega; + int oneovertime; + + + + /* KJL 12:25:51 24/03/98 - quaternions added to handle spining of quaternions over track */ + QUAT quat_prev; + QUAT quat_start_control; + QUAT quat_end_control; + + /* KJL 12:25:37 24/03/98 - data points used to create a smooth curve from the 3d keyframes */ + VECTORCH pivot_0; + VECTORCH pivot_1; + VECTORCH pivot_2; + VECTORCH pivot_3; + +} TRACK_SECTION_DATA; + +typedef struct track_controller +{ + STRATEGYBLOCK* sbptr; + + int num_sections; + TRACK_SECTION_DATA* sections; + + int timer; + int speed_mult; + int current_section; + + TRACK_SOUND* sound; + TRACK_SOUND* start_sound; + TRACK_SOUND* end_sound; + + int initial_state_timer; //used by Reset_Track() + + unsigned int playing:1; + unsigned int reverse:1; + unsigned int no_rotation:1; + unsigned int loop:1; + unsigned int loop_backandforth:1; + unsigned int use_speed_mult:1; + unsigned int use_smoothing:1; + unsigned int playing_start_sound:1; + unsigned int initial_state_playing:1; //used by Reset_Track() + unsigned int initial_state_reverse:1; //used by Reset_Track() + + + +}TRACK_CONTROLLER; + +void Update_Track_Position_Only(TRACK_CONTROLLER* tc); //just moves track to correspond with current timer setting +void Update_Track_Position(TRACK_CONTROLLER* tc); +void Preprocess_Track_Controller(TRACK_CONTROLLER* tc); + +void Start_Track_Playing(TRACK_CONTROLLER* tc); +void Stop_Track_Playing(TRACK_CONTROLLER* tc); + +void Reset_Track(TRACK_CONTROLLER* tc); //called when restarting a level + +void Deallocate_Track(TRACK_CONTROLLER* tc); + +/*the track_sound stuff doesn't actually refer to the track directly , so +it can be used by other things*/ +void Start_Track_Sound(TRACK_SOUND* ts,VECTORCH * location); +void Stop_Track_Sound(TRACK_SOUND* ts); +void Update_Track_Sound(TRACK_SOUND* ts,VECTORCH * location); +void Deallocate_Track_Sound(TRACK_SOUND* ts); + +struct save_block_header; + +void LoadTrackPosition(struct save_block_header*,TRACK_CONTROLLER*); +void SaveTrackPosition(TRACK_CONTROLLER*); + +#ifdef __cplusplus +} +#endif + +#endif
\ No newline at end of file |
