FS2_Open
Open source remastering of the Freespace 2 engine
beam.cpp File Reference
#include <algorithm>
#include "asteroid/asteroid.h"
#include "cmdline/cmdline.h"
#include "debris/debris.h"
#include "debugconsole/console.h"
#include "freespace2/freespace.h"
#include "gamesnd/gamesnd.h"
#include "globalincs/linklist.h"
#include "hud/hudmessage.h"
#include "hud/hudshield.h"
#include "iff_defs/iff_defs.h"
#include "io/timer.h"
#include "lighting/lighting.h"
#include "network/multi.h"
#include "network/multimsgs.h"
#include "object/objcollide.h"
#include "object/object.h"
#include "object/objectshield.h"
#include "parse/parselo.h"
#include "parse/scripting.h"
#include "particle/particle.h"
#include "playerman/player.h"
#include "render/3d.h"
#include "ship/ship.h"
#include "ship/shiphit.h"
#include "weapon/beam.h"
#include "weapon/weapon.h"

Go to the source code of this file.

Classes

struct  beam_light_info
 

Macros

#define BEAM_AREA_PERCENT   0.4f
 
#define BEAM_RANDOM_FACTOR   0.4f
 
#define BEAM_DAMAGE_TIME   170
 
#define MAX_SHOT_POINTS   30
 
#define SHOT_POINT_TIME   200
 
#define TOOLTIME   1500.0f
 
#define BEAM_NUM_GOOD_OCTANTS   8
 
#define BEAM_TEST_STAMP_TIME   4000
 
#define BEAM_WARMUP_PCT(b)   ( ((float)Weapon_info[b->weapon_info_index].b_info.beam_warmup - (float)timestamp_until(b->warmup_stamp)) / (float)Weapon_info[b->weapon_info_index].b_info.beam_warmup )
 
#define BEAM_WARMDOWN_PCT(b)   ( ((float)Weapon_info[b->weapon_info_index].b_info.beam_warmdown - (float)timestamp_until(b->warmdown_stamp)) / (float)Weapon_info[b->weapon_info_index].b_info.beam_warmdown )
 
#define MAX_BEAM_LIGHT_INFO   100
 
#define BEAM_T(b)   ( ((b->binfo.delta_ang / b->life_total) * (b->life_total - b->life_left)) / b->binfo.delta_ang )
 
#define STUFF_VERTICES()
 
#define P_VERTICES()
 

Typedefs

typedef struct beam_light_info beam_light_info
 

Functions

void beam_delete (beam *b)
 
void beam_handle_collisions (beam *b)
 
void beam_get_binfo (beam *b, float accuracy, int num_shots)
 
void beam_aim (beam *b)
 
void beam_type_a_move (beam *b)
 
void beam_type_b_move (beam *b)
 
void beam_type_c_move (beam *b)
 
void beam_type_d_move (beam *b)
 
void beam_type_d_get_status (beam *b, int *shot_index, int *fire_wait)
 
void beam_type_e_move (beam *b)
 
void beam_get_octant_points (int modelnum, object *objp, int oct_index, int oct_array[BEAM_NUM_GOOD_OCTANTS][4], vec3d *v1, vec3d *v2)
 
int beam_get_model (object *objp)
 
void beam_get_cull_vals (object *objp, beam *b, float *cull_dot, float *cull_dist)
 
float beam_get_cone_dot (beam *b)
 
void beam_calc_facing_pts (vec3d *top, vec3d *bot, vec3d *fvec, vec3d *pos, float w, float z_add)
 
void beam_render_muzzle_glow (beam *b)
 
void beam_generate_muzzle_particles (beam *b)
 
void beam_jitter_aim (beam *b, float aim)
 
int beam_ok_to_fire (beam *b)
 
void beam_start_warmup (beam *b)
 
int beam_start_firing (beam *b)
 
void beam_start_warmdown (beam *b)
 
void beam_add_collision (beam *b, object *hit_object, mc_info *cinfo, int quad=-1, int exit_flag=0)
 
float beam_get_widest (beam *b)
 
void beam_add_light (beam *b, int objnum, int source, vec3d *c_point)
 
void beam_apply_lighting ()
 
void beam_recalc_sounds (beam *b)
 
void beam_apply_whack (beam *b, object *objp, vec3d *hit_point)
 
float beam_get_ship_damage (beam *b, object *objp)
 
int beam_will_tool_target (beam *b, object *objp)
 
void beam_init ()
 
void beam_level_init ()
 
void beam_level_close ()
 
int beam_fire (beam_fire_info *fire_info)
 
int beam_fire_targeting (fighter_beam_fire_info *fire_info)
 
int beam_get_parent (object *bm)
 
int beam_get_weapon_info_index (object *bm)
 
int beam_get_num_collisions (int objnum)
 
int beam_get_collision (int objnum, int num, int *collision_objnum, mc_info **cinfo)
 
void beam_pause_sounds ()
 
void beam_unpause_sounds ()
 
void beam_get_global_turret_gun_info (object *objp, ship_subsys *ssp, vec3d *gpos, vec3d *gvec, int use_angles, vec3d *targetp, bool fighter_beam)
 
void beam_move_all_pre ()
 
void beam_move_all_post ()
 
void beam_render (beam *b, float u_offset)
 
void beam_render_all ()
 
void beam_add_light_small (beam *bm, object *objp, vec3d *pt_override=NULL)
 
void beam_add_light_large (beam *bm, object *objp, vec3d *pt0, vec3d *pt1)
 
int beam_collide_ship (obj_pair *pair)
 
int beam_collide_asteroid (obj_pair *pair)
 
int beam_collide_missile (obj_pair *pair)
 
int beam_collide_debris (obj_pair *pair)
 
int beam_collide_early_out (object *a, object *b)
 
bool beam_sort_collisions_func (const beam_collision &b1, const beam_collision &b2)
 
 DCF (beam_list,"Lists all beams")
 

Variables

int Cmdline_nohtl
 
beam Beams [MAX_BEAMS]
 
beam Beam_free_list
 
beam Beam_used_list
 
int Beam_count = 0
 
int Beam_good_slash_octants [BEAM_NUM_GOOD_OCTANTS][4]
 
int Beam_good_shot_octants [BEAM_NUM_GOOD_OCTANTS][4]
 
int Beam_lighting = 1
 
int Beam_test_stamp = -1
 
int Beam_test_ints = 0
 
int Beam_test_ship = 0
 
int Beam_test_ast = 0
 
int Beam_test_framecount = 0
 
int physics_paused
 
beam_light_info Beam_lights [MAX_BEAM_LIGHT_INFO]
 
int Beam_light_count = 0
 
float b_whack_small = 2000.0f
 
float b_whack_big = 10000.0f
 
float b_whack_damage = 150.0f
 
int hack_time = 100
 
float blight = 25.5f
 
float beam_accuracy = 1.0f
 

Macro Definition Documentation

#define BEAM_AREA_PERCENT   0.4f

Definition at line 49 of file beam.cpp.

#define BEAM_DAMAGE_TIME   170

Definition at line 54 of file beam.cpp.

#define BEAM_NUM_GOOD_OCTANTS   8

Definition at line 66 of file beam.cpp.

#define BEAM_RANDOM_FACTOR   0.4f

Definition at line 52 of file beam.cpp.

#define BEAM_T (   b)    ( ((b->binfo.delta_ang / b->life_total) * (b->life_total - b->life_left)) / b->binfo.delta_ang )

Definition at line 753 of file beam.cpp.

#define BEAM_TEST_STAMP_TIME   4000

Definition at line 92 of file beam.cpp.

#define BEAM_WARMDOWN_PCT (   b)    ( ((float)Weapon_info[b->weapon_info_index].b_info.beam_warmdown - (float)timestamp_until(b->warmdown_stamp)) / (float)Weapon_info[b->weapon_info_index].b_info.beam_warmdown )

Definition at line 103 of file beam.cpp.

#define BEAM_WARMUP_PCT (   b)    ( ((float)Weapon_info[b->weapon_info_index].b_info.beam_warmup - (float)timestamp_until(b->warmup_stamp)) / (float)Weapon_info[b->weapon_info_index].b_info.beam_warmup )

Definition at line 100 of file beam.cpp.

#define MAX_BEAM_LIGHT_INFO   100

Definition at line 109 of file beam.cpp.

#define MAX_SHOT_POINTS   30

Definition at line 55 of file beam.cpp.

#define P_VERTICES ( )
Value:
do {\
for(idx=0; idx<4; idx++){\
g3_project_vertex(verts[idx]);\
}\
} while(0);
int g3_project_vertex(vertex *point)
Definition: 3dmath.cpp:202
int idx
Definition: multiui.cpp:761
for(int idx=0;idx< i;idx++)
Definition: multi_pxo.cpp:472

Definition at line 1143 of file beam.cpp.

#define SHOT_POINT_TIME   200

Definition at line 56 of file beam.cpp.

#define STUFF_VERTICES ( )
Value:
do {\
verts[0]->texture_position.u = 0.0f;\
verts[0]->texture_position.v = 0.0f;\
verts[1]->texture_position.u = 1.0f;\
verts[1]->texture_position.v = 0.0f;\
verts[2]->texture_position.u = 1.0f;\
verts[2]->texture_position.v = 1.0f;\
verts[3]->texture_position.u = 0.0f;\
verts[3]->texture_position.v = 1.0f;\
} while(0);

Definition at line 1132 of file beam.cpp.

#define TOOLTIME   1500.0f

Definition at line 58 of file beam.cpp.

Typedef Documentation

Function Documentation

void beam_add_collision ( beam b,
object hit_object,
mc_info cinfo,
int  quad = -1,
int  exit_flag = 0 
)

Definition at line 3001 of file beam.cpp.

void beam_add_light ( beam b,
int  objnum,
int  source,
vec3d c_point 
)

Definition at line 1751 of file beam.cpp.

void beam_add_light_large ( beam bm,
object objp,
vec3d pt0,
vec3d pt1 
)

Definition at line 1699 of file beam.cpp.

void beam_add_light_small ( beam bm,
object objp,
vec3d pt_override = NULL 
)

Definition at line 1629 of file beam.cpp.

void beam_aim ( beam b)

Definition at line 2175 of file beam.cpp.

void beam_apply_lighting ( )

Definition at line 1778 of file beam.cpp.

void beam_apply_whack ( beam b,
object objp,
vec3d hit_point 
)

Definition at line 3539 of file beam.cpp.

void beam_calc_facing_pts ( vec3d top,
vec3d bot,
vec3d fvec,
vec3d pos,
float  w,
float  z_add 
)

Definition at line 1603 of file beam.cpp.

int beam_collide_asteroid ( obj_pair pair)

Definition at line 2625 of file beam.cpp.

int beam_collide_debris ( obj_pair pair)

Definition at line 2814 of file beam.cpp.

int beam_collide_early_out ( object a,
object b 
)

Definition at line 2906 of file beam.cpp.

int beam_collide_missile ( obj_pair pair)

Definition at line 2721 of file beam.cpp.

int beam_collide_ship ( obj_pair pair)

Definition at line 2397 of file beam.cpp.

void beam_delete ( beam b)

Definition at line 1839 of file beam.cpp.

int beam_fire ( beam_fire_info fire_info)

Definition at line 281 of file beam.cpp.

int beam_fire_targeting ( fighter_beam_fire_info fire_info)

Definition at line 476 of file beam.cpp.

void beam_generate_muzzle_particles ( beam b)
Initial value:
{
int hack_time
Definition: beam.cpp:1278
void dc_stuff_int(int *i)
Stuffs an int to the given variable. Supports binary (0b), hexadecimal (0x), and octal (0o) formats...

Definition at line 1284 of file beam.cpp.

void beam_get_binfo ( beam b,
float  accuracy,
int  num_shots 
)

Definition at line 2045 of file beam.cpp.

int beam_get_collision ( int  objnum,
int  num,
int collision_objnum,
mc_info **  cinfo 
)

Definition at line 655 of file beam.cpp.

float beam_get_cone_dot ( beam b)

Definition at line 3406 of file beam.cpp.

void beam_get_cull_vals ( object objp,
beam b,
float cull_dot,
float cull_dist 
)

Definition at line 3365 of file beam.cpp.

void beam_get_global_turret_gun_info ( object objp,
ship_subsys ssp,
vec3d gpos,
vec3d gvec,
int  use_angles,
vec3d targetp,
bool  fighter_beam 
)

Definition at line 720 of file beam.cpp.

int beam_get_model ( object objp)

Definition at line 1872 of file beam.cpp.

int beam_get_num_collisions ( int  objnum)

Definition at line 629 of file beam.cpp.

void beam_get_octant_points ( int  modelnum,
object objp,
int  oct_index,
int  oct_array[BEAM_NUM_GOOD_OCTANTS][4],
vec3d v1,
vec3d v2 
)

Definition at line 2333 of file beam.cpp.

int beam_get_parent ( object bm)

Definition at line 579 of file beam.cpp.

float beam_get_ship_damage ( beam b,
object objp 
)

Definition at line 3592 of file beam.cpp.

int beam_get_weapon_info_index ( object bm)

Definition at line 608 of file beam.cpp.

float beam_get_widest ( beam b)

Definition at line 3512 of file beam.cpp.

void beam_handle_collisions ( beam b)

Definition at line 3042 of file beam.cpp.

void beam_init ( )

Definition at line 247 of file beam.cpp.

void beam_jitter_aim ( beam b,
float  aim 
)

Definition at line 2359 of file beam.cpp.

void beam_level_close ( )

Definition at line 273 of file beam.cpp.

void beam_level_init ( )

Definition at line 253 of file beam.cpp.

void beam_move_all_post ( )

Definition at line 986 of file beam.cpp.

void beam_move_all_pre ( )

Definition at line 906 of file beam.cpp.

int beam_ok_to_fire ( beam b)

Definition at line 3428 of file beam.cpp.

void beam_pause_sounds ( )

Definition at line 682 of file beam.cpp.

void beam_recalc_sounds ( beam b)

Definition at line 2004 of file beam.cpp.

void beam_render ( beam b,
float  u_offset 
)

Definition at line 1149 of file beam.cpp.

void beam_render_all ( )

Definition at line 1558 of file beam.cpp.

void beam_render_muzzle_glow ( beam b)

Definition at line 1383 of file beam.cpp.

bool beam_sort_collisions_func ( const beam_collision b1,
const beam_collision b2 
)

Definition at line 3036 of file beam.cpp.

int beam_start_firing ( beam b)

Definition at line 1931 of file beam.cpp.

void beam_start_warmdown ( beam b)

Definition at line 1986 of file beam.cpp.

void beam_start_warmup ( beam b)

Definition at line 1919 of file beam.cpp.

void beam_type_a_move ( beam b)

Definition at line 730 of file beam.cpp.

void beam_type_b_move ( beam b)

Definition at line 754 of file beam.cpp.

void beam_type_c_move ( beam b)

Definition at line 791 of file beam.cpp.

void beam_type_d_get_status ( beam b,
int shot_index,
int fire_wait 
)

Definition at line 862 of file beam.cpp.

void beam_type_d_move ( beam b)

Definition at line 823 of file beam.cpp.

void beam_type_e_move ( beam b)

Definition at line 883 of file beam.cpp.

void beam_unpause_sounds ( )

Definition at line 703 of file beam.cpp.

int beam_will_tool_target ( beam b,
object objp 
)

Definition at line 3635 of file beam.cpp.

DCF ( beam_list  ,
"Lists all beams"   
)

Definition at line 3682 of file beam.cpp.

Variable Documentation

float b_whack_big = 10000.0f

Definition at line 121 of file beam.cpp.

float b_whack_damage = 150.0f

Definition at line 122 of file beam.cpp.

float b_whack_small = 2000.0f

Definition at line 120 of file beam.cpp.

float beam_accuracy = 1.0f

Definition at line 3677 of file beam.cpp.

int Beam_count = 0

Definition at line 63 of file beam.cpp.

beam Beam_free_list

Definition at line 61 of file beam.cpp.

int Beam_good_shot_octants[BEAM_NUM_GOOD_OCTANTS][4]
Initial value:
= {
{ 5, 0, 1, 0 },
{ 7, 2, 1, 0 },
{ 7, 1, 1, 0 },
{ 6, 0, 1, 0 },
{ 7, 3, 1, 0 },
{ 6, 2, 1, 0 },
{ 5, 1, 1, 0 },
{ 4, 0, 1, 0 },
}

Definition at line 77 of file beam.cpp.

int Beam_good_slash_octants[BEAM_NUM_GOOD_OCTANTS][4]
Initial value:
= {
{ 2, 5, 1, 0 },
{ 7, 0, 1, 0 },
{ 1, 6, 1, 0 },
{ 6, 1, 0, 1 },
{ 5, 2, 0, 1 },
{ 0, 7, 0, 1 },
{ 7, 1, 1, 0 },
{ 6, 0, 1, 0 },
}

Definition at line 67 of file beam.cpp.

int Beam_light_count = 0

Definition at line 118 of file beam.cpp.

int Beam_lighting = 1

Definition at line 89 of file beam.cpp.

Definition at line 117 of file beam.cpp.

int Beam_test_ast = 0

Definition at line 96 of file beam.cpp.

int Beam_test_framecount = 0

Definition at line 97 of file beam.cpp.

int Beam_test_ints = 0

Definition at line 94 of file beam.cpp.

int Beam_test_ship = 0

Definition at line 95 of file beam.cpp.

int Beam_test_stamp = -1

Definition at line 93 of file beam.cpp.

beam Beam_used_list

Definition at line 62 of file beam.cpp.

beam Beams[MAX_BEAMS]

Definition at line 60 of file beam.cpp.

float blight = 25.5f

Definition at line 1622 of file beam.cpp.

int Cmdline_nohtl

Definition at line 438 of file cmdline.cpp.

int hack_time = 100

Definition at line 1278 of file beam.cpp.

int physics_paused

Definition at line 677 of file object.cpp.