naev 0.11.5
spfx.h
1/*
2 * See Licensing and Copyright notice in naev.h
3 */
4#pragma once
5
6#include "ntime.h"
7#include "opengl.h"
8#include "physics.h"
9
10#define SPFX_LAYER_FRONT 0
11#define SPFX_LAYER_MIDDLE 1
12#define SPFX_LAYER_BACK 2
14#define SPFX_DAMAGE_DECAY 0.5
15#define SPFX_DAMAGE_MOD 1.5
16#define SPFX_DAMAGE_MAX 1.0
18#define SPFX_SHAKE_DECAY 0.3
19#define SPFX_SHAKE_MOD 1.0
20#define SPFX_SHAKE_MAX 1.0
25typedef struct TrailStyle_ {
26 glColour col;
27 float thick;
29
33typedef enum TrailMode_ {
34 MODE_IDLE, MODE_GLOW, MODE_AFTERBURN, MODE_JUMPING, MODE_NONE,
35 MODE_MAX
36} TrailMode;
37
38#define MODE_TAGS {"idle", "glow", "afterburn", "jumping", "none",}
39
43typedef struct TrailSpec_ {
44 char* name;
45 char *filename;
46 double ttl;
47 float def_thick;
48 GLuint type;
49 TrailStyle style[MODE_MAX];
50 int nebula;
51} TrailSpec;
52
53typedef struct TrailPoint {
54 GLfloat x, y;
55 GLfloat t;
56 TrailMode mode;
58
64typedef struct Trail_spfx_ {
65 const TrailSpec *spec;
67 size_t capacity;
68 size_t iread;
69 size_t iwrite;
71 double dt;
72 GLfloat r;
73 unsigned int ontop;
75
77#define trail_at( trail, i ) ( (trail)->point_ringbuf[ (i) & ((trail)->capacity - 1) ] )
79#define trail_size( trail ) ( (trail)->iwrite - (trail)->iread )
81#define trail_front( trail ) trail_at( trail, (trail)->iread )
83#define trail_back( trail ) trail_at( trail, (trail)->iwrite-1 )
84
85/*
86 * stack manipulation
87 */
88int spfx_get( const char *name );
89const TrailSpec* trailSpec_get( const char* name );
90void spfx_add( int effect,
91 const double px, const double py,
92 const double vx, const double vy,
93 int layer );
94
95/*
96 * stack mass manipulation functions
97 */
98void spfx_update( const double dt, const double real_dt );
99void spfx_render( int layer, double dt );
100void spfx_clear (void);
102void spfx_trail_sample( Trail_spfx* trail, double x, double y, TrailMode mode, int force );
103void spfx_trail_remove( Trail_spfx* trail );
104void spfx_trail_draw( const Trail_spfx* trail );
105
106/*
107 * Misc effects.
108 */
109void spfx_shake( double mod );
110void spfx_damage( double mod );
111
112/*
113 * other effects
114 */
115void spfx_cinematic (void);
116
117/*
118 * spfx effect loading and freeing
119 */
120int spfx_load (void);
121void spfx_free (void);
static double real_dt
Definition naev.c:113
void spfx_free(void)
Frees the spfx stack.
Definition spfx.c:424
int spfx_load(void)
Loads the spfx stack.
Definition spfx.c:360
void spfx_render(int layer, double dt)
Renders the entire spfx layer.
Definition spfx.c:1093
const TrailSpec * trailSpec_get(const char *name)
Gets a trail spec by name.
Definition spfx.c:1283
void spfx_cinematic(void)
Sets the cinematic mode.
Definition spfx.c:1006
void spfx_trail_sample(Trail_spfx *trail, double x, double y, TrailMode mode, int force)
Makes a trail grow.
Definition spfx.c:756
void spfx_shake(double mod)
Increases the current rumble level.
Definition spfx.c:898
void spfx_clear(void)
Clears all the currently running effects.
Definition spfx.c:522
int spfx_get(const char *name)
Gets the id of an spfx based on name.
Definition spfx.c:342
void spfx_trail_remove(Trail_spfx *trail)
Removes a trail.
Definition spfx.c:792
void spfx_add(int effect, const double px, const double py, const double vx, const double vy, int layer)
Creates a new special effect.
Definition spfx.c:475
void spfx_damage(double mod)
Increases the current damage level.
Definition spfx.c:918
Trail_spfx * spfx_trail_create(const TrailSpec *spec)
Initalizes a trail.
Definition spfx.c:688
void spfx_update(const double dt, const double real_dt)
Updates all the spfx.
Definition spfx.c:550
void spfx_trail_draw(const Trail_spfx *trail)
Draws a trail on screen.
Definition spfx.c:811
TrailMode mode
Definition spfx.h:56
GLfloat y
Definition spfx.h:54
GLfloat t
Definition spfx.h:55
represents a set of styles for trails.
Definition spfx.h:43
int nebula
Definition spfx.h:50
GLuint type
Definition spfx.h:48
double ttl
Definition spfx.h:46
float def_thick
Definition spfx.h:47
char * name
Definition spfx.h:44
Represents the appearance characteristics for a given trail mode.
Definition spfx.h:25
glColour col
Definition spfx.h:26
float thick
Definition spfx.h:27
A trail generated by a ship or an ammo.
Definition spfx.h:64
int refcount
Definition spfx.h:70
double dt
Definition spfx.h:71
TrailPoint * point_ringbuf
Definition spfx.h:66
GLfloat r
Definition spfx.h:72
size_t iread
Definition spfx.h:68
size_t iwrite
Definition spfx.h:69
unsigned int ontop
Definition spfx.h:73
size_t capacity
Definition spfx.h:67