2 * See Licensing and Copyright notice in naev.h
8 * @brief Handles scattering debris around.
22 static int *debris_spfx
= NULL
; /**< Debris special effects. */
23 static int debris_nspfx
= 0; /**< Number of debris special effects. */
27 * @brief Cleans up after the debris.
29 void debris_cleanup (void)
37 * @brief Loads the debris spfx into an array.
39 static int debris_load (void)
44 /* Calculate amount. */
47 snprintf( buf
, 32, "Dbr%d", i
);
49 } while (spfx_get(buf
) != -1);
52 /* Check to make sure they exist. */
53 if (debris_nspfx
<= 0) {
54 WARN("No debris special effects found.");
59 debris_spfx
= malloc( sizeof(int) * debris_nspfx
);
61 /* Second pass to fill. */
62 for (i
=0; i
<debris_nspfx
; i
++) {
63 snprintf( buf
, 32, "Dbr%d", i
);
64 debris_spfx
[i
] = spfx_get(buf
);
72 * @brief Creates a cloud of debris.
74 * @param mass Mass of the debris cloud.
75 * @param x X position to center cloud.
76 * @param y Y position to center cloud.
78 void debris_add( double mass
, double r
, double px
, double py
,
79 double vx
, double vy
)
82 double npx
,npy
, nvx
,nvy
;
86 if (debris_spfx
== NULL
)
87 if (debris_load() < 0)
90 /* Get number of debris to render. */
91 n
= (int) ceil( sqrt(mass
) / 1.5 );
93 /* Now add the spfx. */
96 d
= r
/2. * RNG_2SIGMA();
102 d
= n
* RNG_2SIGMA();
108 spfx_add( debris_spfx
[ RNG( 0, debris_nspfx
-1 ) ],
109 npx
, npy
, nvx
, nvy
, RNG(0,1) );