// "var" stands for variation, aka += in GD
/**
* @module particles
*/
/**
* @typedef {Object} particle_props
* @property {number} MAX_PARTICLES - Maximum number of particles.
* @property {number} DURATION - Duration of the particle effect.
* @property {number} LIFETIME - Lifetime of particles.
* @property {number} LIFETIME_VAR - Variance in particle lifetime.
* @property {number} EMISSION - Rate of particle emission.
* @property {number} ANGLE - Emission angle.
* @property {number} ANGLE_VAR - Variance in emission angle.
* @property {number} SPEED - Speed of particles.
* @property {number} SPEED_VAR - Variance in particle speed.
* @property {number} POSVAR_X - Variance in particle position along the X axis.
* @property {number} POSVAR_Y - Variance in particle position along the Y axis.
* @property {number} GRAVITY_X - Gravity effect on particles along the X axis.
* @property {number} GRAVITY_Y - Gravity effect on particles along the Y axis.
* @property {number} ACCEL_RAD - Radial acceleration.
* @property {number} ACCEL_RAD_VAR - Variance in radial acceleration.
* @property {number} ACCEL_TAN - Tangential acceleration.
* @property {number} ACCEL_TAN_VAR - Variance in tangential acceleration.
* @property {number} START_SIZE - Initial size of particles.
* @property {number} START_SIZE_VAR - Variance in initial size.
* @property {number} START_SPIN - Initial spin of particles.
* @property {number} START_SPIN_VAR - Variance in initial spin.
* @property {number} START_R - Initial red color value.
* @property {number} START_R_VAR - Variance in initial red color.
* @property {number} START_G - Initial green color value.
* @property {number} START_G_VAR - Variance in initial green color.
* @property {number} START_B - Initial blue color value.
* @property {number} START_B_VAR - Variance in initial blue color.
* @property {number} START_A - Initial alpha (opacity) value.
* @property {number} START_A_VAR - Variance in initial alpha value.
* @property {number} END_SIZE - Final size of particles.
* @property {number} END_SIZE_VAR - Variance in final size.
* @property {number} END_SPIN - Final spin of particles.
* @property {number} END_SPIN_VAR - Variance in final spin.
* @property {number} END_R - Final red color value.
* @property {number} END_R_VAR - Variance in final red color.
* @property {number} END_G - Final green color value.
* @property {number} END_G_VAR - Variance in final green color.
* @property {number} END_B - Final blue color value.
* @property {number} END_B_VAR - Variance in final blue color.
* @property {number} END_A - Final alpha (opacity) value.
* @property {number} END_A_VAR - Variance in final alpha value.
* @property {number} FADE_IN - Fade-in duration.
* @property {number} FADE_IN_VAR - Variance in fade-in duration.
* @property {number} FADE_OUT - Fade-out duration.
* @property {number} FADE_OUT_VAR - Variance in fade-out duration.
* @property {number} START_RAD - Initial radial position.
* @property {number} START_RAD_VAR - Variance in initial radial position.
* @property {number} END_RAD - Final radial position.
* @property {number} END_RAD_VAR - Variance in final radial position.
* @property {number} ROT_SEC - Rotation per second.
* @property {number} ROT_SEC_VAR - Variance in rotation per second.
* @property {number} GRAVITY_RADIUS - Radius for gravity effect.
* @property {number} FREE_RELATIVE_GROUPED - Indicates if particles are free, relative, or grouped.
* @property {number} ADDITIVE - Indicates if additive blending is used.
* @property {number} START_SPIN_END - Indicates if the initial spin is used at the end.
* @property {number} START_ROT_IS_DIR - Indicates if the initial rotation is the direction.
* @property {number} DYNAMIC_ROTATION - Indicates if dynamic rotation is applied.
* @property {number} TEXTURE - Texture used for particles.
* @property {number} UNIFORM_OBJ_COLOR - Uniform object color flag.
* @property {number} FRICTION_P - Friction parallel to direction of movement.
* @property {number} FRICTION_P_VAR - Variance in parallel friction.
* @property {number} RESPAWN - Respawn rate of particles.
* @property {number} RESPAWN_VAR - Variance in respawn rate.
* @property {number} ORDER_SENSITIVE - Indicates if the order of particles is sensitive.
* @property {number} START_SIZE_END - Indicates if the start size is used at the end.
* @property {number} START_RAD_END - Indicates if the initial radial position is used at the end.
* @property {number} START_RGB_VAR_SYNC - Sync variance in initial RGB values.
* @property {number} END_RGB_VAR_SYNC - Sync variance in final RGB values.
* @property {number} FRICTION_S - Friction perpendicular to direction of movement.
* @property {number} FRICTION_S_VAR - Variance in perpendicular friction.
* @property {number} FRICTION_R - Rotational friction.
* @property {number} FRICTION_R_VAR - Variance in rotational friction.
*/
let parts = [
'MAX_PARTICLES',
'DURATION',
'LIFETIME',
'LIFETIME_VAR',
'EMISSION',
'ANGLE',
'ANGLE_VAR',
'SPEED',
'SPEED_VAR',
'POSVAR_X',
'POSVAR_Y',
'GRAVITY_X',
'GRAVITY_Y',
'ACCEL_RAD',
'ACCEL_RAD_VAR',
'ACCEL_TAN',
'ACCEL_TAN_VAR',
'START_SIZE',
'START_SIZE_VAR',
'START_SPIN',
'START_SPIN_VAR',
'START_R',
'START_R_VAR',
'START_G',
'START_G_VAR',
'START_B',
'START_B_VAR',
'START_A',
'START_A_VAR',
'END_SIZE',
'END_SIZE_VAR',
'END_SPIN',
'END_SPIN_VAR',
'END_R',
'END_R_VAR',
'END_G',
'END_G_VAR',
'END_B',
'END_B_VAR',
'END_A',
'END_A_VAR',
'FADE_IN',
'FADE_IN_VAR',
'FADE_OUT',
'FADE_OUT_VAR',
'START_RAD',
'START_RAD_VAR',
'END_RAD',
'END_RAD_VAR',
'ROT_SEC',
'ROT_SEC_VAR',
'GRAVITY_RADIUS',
'FREE_RELATIVE_GROUPED',
'ADDITIVE',
'START_SPIN_END',
'START_ROT_IS_DIR',
'DYNAMIC_ROTATION',
'TEXTURE',
'UNIFORM_OBJ_COLOR',
'FRICTION_P',
'FRICTION_P_VAR',
'RESPAWN',
'RESPAWN_VAR',
'ORDER_SENSITIVE',
'START_SIZE_END',
'START_RAD_END',
'START_RGB_VAR_SYNC',
'END_RGB_VAR_SYNC',
'FRICTION_S',
'FRICTION_S_VAR',
'FRICTION_R',
'FRICTON_R_VAR'
];
let d_parts = {};
parts.forEach((x, i) => d_parts[x] = i);
module.exports = d_parts;