FS2_Open
Open source remastering of the Freespace 2 engine
trails.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) Volition, Inc. 1999. All rights reserved.
3  *
4  * All source code herein is the property of Volition, Inc. You may not sell
5  * or otherwise commercially exploit the source or things you created based on the
6  * source.
7  *
8 */
9 
10 
11 
12 #ifndef _TRAILS_H
13 #define _TRAILS_H
14 
15 #include "globalincs/pstypes.h"
16 #include "graphics/generic.h"
17 
18 #define NUM_TRAIL_SECTIONS 128
19 
20 // contrail info - similar to that for missile trails
21 // place this inside of info structures instead of explicit structs (eg. ship_info instead of ship, or weapon_info instead of weapon)
22 typedef struct trail_info {
23  vec3d pt; // offset from the object's center
24  float w_start; // starting width
25  float w_end; // ending width
26  float a_start; // starting alpha
27  float a_end; // ending alpha
28  float max_life; // max_life for a section
29  int stamp; // spew timestamp
30  generic_bitmap texture; // texture to use for trail
31  int n_fade_out_sections;// number of initial sections used for fading out start 'edge' of the effect
32 } trail_info;
33 
34 typedef struct trail {
35  int head, tail; // pointers into the queue for the trail points
36  vec3d pos[NUM_TRAIL_SECTIONS]; // positions of trail points
37  float val[NUM_TRAIL_SECTIONS]; // for each point, a value that tells how much to fade out
38  bool object_died; // set to zero as long as object
39  int trail_stamp; // trail timestamp
40 
41  // trail info
42  trail_info info; // this is passed when creating a trail
43 
44  struct trail * next;
45 
46 } trail;
47 
48 // Call at the start of freespace to init trails
49 
50 // Call at start of level to reinit all missilie trail stuff
51 void trail_level_init();
52 
53 void trail_level_close();
54 
55 // Needs to be called from somewhere to move the trails each frame
56 void trail_move_all(float frametime);
57 
58 // Needs to be called from somewhere to render the trails each frame
59 void trail_render_all();
60 
61 // The following functions are what the weapon code calls
62 // to deal with trails:
63 
64 // Returns -1 if failed
66 void trail_add_segment( trail *trailp, vec3d *pos );
67 void trail_set_segment( trail *trailp, vec3d *pos );
68 void trail_object_died( trail *trailp );
69 int trail_stamp_elapsed( trail *trailp );
70 void trail_set_stamp( trail *trailp );
71 
72 #endif //_TRAILS_H
int stamp
Definition: trails.h:29
Definition: trails.h:34
int head
Definition: trails.h:35
int trail_stamp
Definition: trails.h:39
int tail
Definition: trails.h:35
struct trail_info trail_info
Definition: pstypes.h:88
void trail_set_stamp(trail *trailp)
Definition: trails.cpp:577
#define NUM_TRAIL_SECTIONS
Definition: trails.h:18
float max_life
Definition: trails.h:28
void trail_render_all()
Definition: trails.cpp:556
vec3d pt
Definition: trails.h:23
float a_start
Definition: trails.h:26
bool object_died
Definition: trails.h:38
struct trail * next
Definition: trails.h:44
void trail_level_init()
Definition: trails.cpp:26
vec3d pos[NUM_TRAIL_SECTIONS]
Definition: trails.h:36
void trail_level_close()
Definition: trails.cpp:36
trail_info info
Definition: trails.h:42
GLuint GLfloat * val
Definition: Glext.h:6741
void trail_add_segment(trail *trailp, vec3d *pos)
Definition: trails.cpp:480
trail * trail_create(trail_info *info)
Definition: trails.cpp:52
hull_check pos
Definition: lua.cpp:5050
void trail_object_died(trail *trailp)
Definition: trails.cpp:551
float w_start
Definition: trails.h:24
void trail_move_all(float frametime)
Definition: trails.cpp:508
float a_end
Definition: trails.h:27
struct trail trail
float w_end
Definition: trails.h:25
generic_bitmap texture
Definition: trails.h:30
int n_fade_out_sections
Definition: trails.h:31
void trail_set_segment(trail *trailp, vec3d *pos)
Definition: trails.cpp:498
int trail_stamp_elapsed(trail *trailp)
Definition: trails.cpp:572