47 #define                 ASTEROID_OBJ_USED       (1<<0)                          // flag used in asteroid_obj struct 
   48 #define                 MAX_ASTEROID_OBJS       MAX_ASTEROIDS           // max number of asteroids tracked in asteroid list 
   53 #define SMALL_DEBRIS_WEIGHT     8 
   54 #define MEDIUM_DEBRIS_WEIGHT    4 
   55 #define LARGE_DEBRIS_WEIGHT     1 
   67 static int              Asteroid_impact_explosion_ani;
 
   68 static float    Asteroid_impact_explosion_radius;
 
   73 #define ASTEROID_CHECK_WRAP_TIMESTAMP                   2000    // how often an asteroid gets checked for wrapping 
   74 #define ASTEROID_UPDATE_COLLIDE_TIMESTAMP       2000    // how often asteroid is checked for impending collisions with escort ships 
   75 #define ASTEROID_MIN_COLLIDE_TIME                               24              // time in seconds to check for asteroid colliding 
   97                 Asteroid_objs[
i].
flags = 0;
 
  117         list_append(&Asteroid_obj_list, &Asteroid_objs[index]);
 
  134         list_remove(&Asteroid_obj_list, &Asteroid_objs[index]); 
 
  144         float max, double_max;
 
  146         Assert( asteroid_info_index < (
int)Asteroid_info.size() );
 
  148         max = Asteroid_info[asteroid_info_index].max_speed;
 
  149         double_max = max * 2;
 
  151         while (speed > double_max){
 
  215         for (axis=0; axis<3; axis++) {
 
  218                 Assert(dist1 >= 0 && dist2 >= 0);
 
  245         if(asfieldp == NULL) {
 
  255         if (n >= MAX_ASTEROIDS) {
 
  256                 nprintf((
"Warning",
"Could not create asteroid, no more slots left\n"));
 
  270                 asteroid_subtype = 0;
 
  273         asip = &Asteroid_info[asteroid_type];
 
  276         if(asip->
modelp[asteroid_subtype] == NULL) {
 
  310                 rand_base = signature;
 
  327                 mprintf((
"Couldn't create asteroid -- out of object slots\n"));
 
  414         if (new_objp == NULL)
 
  425         if ( parent_speed < 0.1
f ) {
 
  451         Assert( asteroid_info_index < (
int)Asteroid_info.size() );
 
  454         if ( (asteroid_info_index >= (
int)Asteroid_info.size()) || (asteroid_subtype >= 
NUM_DEBRIS_POFS) ) {
 
  458         asip = &Asteroid_info[asteroid_info_index];
 
  465         if (asip->
model_num[asteroid_subtype] >= 0)
 
  491         int group_base, group_offset;
 
  494         group_offset = index - group_base;
 
  538                 int random_threshold;
 
  542         int max_weighted_range = 0;
 
  553         int num_debris_types = 0;
 
  564                 for (idx=0; idx<num_debris_types; idx++) {
 
  566                         ship_debris_odds_table[
idx].random_threshold = max_weighted_range + debris_weight;
 
  568                         max_weighted_range += debris_weight;
 
  574                 for (idx=0; idx<num_debris_types; idx++) {
 
  598         for (i=0; i<max_asteroids; i++) {
 
  610                         Assert(num_debris_types > 0);
 
  612                         int rand_choice = rand() % max_weighted_range;
 
  616                                 if (rand_choice < ship_debris_odds_table[idx].random_threshold) {
 
  617                                         asteroid_create(&Asteroid_field, ship_debris_odds_table[idx].debris_type, 0);
 
  635         for (ast = Asteroid_info.begin(); ast != Asteroid_info.end(); ++ast)
 
  636                 ast->damage_type_idx = ast->damage_type_idx_sav;
 
  731         int             asteroid_obj_index;
 
  750         vec3d   predicted_center_pos;
 
  763         speed = Asteroid_info[0].max_speed * (
frand()/2.0f + 0.5f);
 
  786         nprintf((
"AI", 
"Incoming asteroids: %i\n", count));
 
  834         asp = &Asteroids[
num];
 
  858                 vec3d   vec_to_asteroid, old_asteroid_pos, old_vel;
 
  861                 old_asteroid_pos = objp->
pos;
 
  871                         if ( (dot < 0.7
f) || (dist > asfieldp->
bound_rad) ) {
 
  882                                         if ( (dot > 0.7
f) && (dist < (asfieldp->
bound_rad * 1.3f)) ) {
 
  884                                                 objp->
pos = old_asteroid_pos;           
 
  905         *goal = (f2 - f1) * scale + f1;
 
  926         int             num, asteroid_subtype;
 
  937         if ( asteroid_hit_info == NULL ) {
 
  946                 mc.
p1 = &other_obj->
pos;                                        
 
  956         object *pship_obj = other_obj;
 
  959         object* heavy = asteroid_hit_info->
heavy;
 
  960         object* lighter = asteroid_hit_info->
light;
 
  961         object *heavy_obj = heavy;
 
  962         object *light_obj = lighter;
 
  974         vec3d p0_temp, p0_rotated;
 
  998         if ( asteroid_hit_info->
heavy == pship_obj ) {  
 
 1006                 int copy_flags = mc.
flags;  
 
 1007                 vec3d copy_p0, copy_p1;
 
 1020                         asteroid_hit_info->
hit_time = FLT_MAX;
 
 1031                                 for (
size_t j=0; j<submodel_vector.size(); j++) {
 
 1040                                 for (
size_t i=0; 
i<submodel_vector.size(); 
i++) {
 
 1068                                                         if (asteroid_hit_info->
edge_hit == 0) {
 
 1073                                                         vec3d int_light_pos, diff;
 
 1086                         mc.
flags = copy_flags;
 
 1100                                         if (asteroid_hit_info->
edge_hit == 0) {
 
 1130                         if ( !asteroid_hit_info->
edge_hit ) {
 
 1155                 if ( asteroid_hit_info->
edge_hit ) {
 
 1179                 asp = &Asteroids[
num];
 
 1198                 asp = &Asteroids[
num];
 
 1218         vec3d   tvec, rand_vec;
 
 1224         while (count++ < 3) {
 
 1228                 if ((mag > 0.2
f) && (mag < 1.7
f))
 
 1246                         switch(Asteroids[num].asteroid_type) {
 
 1269         int     fireball_objnum;
 
 1270         float   explosion_life, fireball_scale_multiplier;
 
 1274         if (fireball_type < 0) {
 
 1287         if ( fireball_objnum > -1 )     {
 
 1290                 explosion_life = 0.0f;
 
 1293         return explosion_life;
 
 1301         int     sound_index = -1;
 
 1302         float range_factor = 1.0f;              
 
 1312                 range_factor = 10.0f;
 
 1315         Assert(sound_index != -1);
 
 1318                 range_factor = 1.0f;
 
 1332         float                           damage, blast;
 
 1337         asp = &Asteroids[asteroid_objp->
instance];
 
 1340         if ( asip->
damage <= 0 ) {              
 
 1370         float           explosion_life;
 
 1373         asp = &Asteroids[pasteroid_obj->
instance];
 
 1387                         int play_loud_collision = 0;
 
 1405         } 
else if ( other_obj ) {
 
 1429                         Asteroids[
i].
flags &= ~AF_USED;
 
 1438 DCF_BOOL2(asteroids, 
Asteroids_enabled, 
"enables or disables asteroids", 
"Usage: asteroids [bool]\nTurns asteroid system on/off.  If nothing passed, then toggles it.\n");
 
 1449                         end_index = start_index-1;
 
 1456         while (i != end_index) {
 
 1487         asp = &Asteroids[pasteroid_obj->
instance];
 
 1491                 vec3d   relvec, vfh, tvec;
 
 1540                                                 int num_roids = split->min;
 
 1541                                                 int num_roids_var = split->max - split->min;
 
 1543                                                 if (num_roids_var > 0)
 
 1544                                                         num_roids += rand() % num_roids_var;
 
 1547                                                         for (
int i=0; 
i<num_roids; 
i++)
 
 1548                                                                 roids_to_create.push_back(split->asteroid_type);
 
 1553                                         int total_roids = roids_to_create.size();
 
 1554                                         for (
int i = 0; 
i < total_roids; 
i++) {
 
 1555                                                 vec3d dir_vec,final_vec;
 
 1556                                                 vec3d parent_vel,hit_rel_vec;
 
 1562                                                 float inc = 
PI * (3.0f - sqrt(5.0
f));
 
 1563                                                 float offset = 2.0f / total_roids;
 
 1565                                                 float y = 
i * offset - 1 + (offset / 2);
 
 1566                                                 float r = sqrt(1.0
f - y*y);
 
 1567                                                 float phi = 
i * inc;
 
 1569                                                 dir_vec.
xyz.x = cosf(phi)*
r;
 
 1570                                                 dir_vec.
xyz.y = sinf(phi)*
r;
 
 1574                                                 vec3d tempv = dir_vec;
 
 1586                                                 vm_vec_avg3(&final_vec, &parent_vel, &hit_rel_vec, &dir_vec);
 
 1621         float           asteroid_ray_dist;
 
 1622         vec3d   asteroid_fvec, terminus;
 
 1629                 terminus = pasteroid_obj->
pos;
 
 1640         mc->
pos = &pship_obj->
pos;                                                                                              
 
 1641         mc->
p0 = &pasteroid_obj->
pos;                                                                                   
 
 1703         int             i, num_escorts, escort_objnum, will_collide=0;
 
 1707         asp = &Asteroids[asteroid_objp->
instance];
 
 1718         if ( num_escorts <= 0 ) {
 
 1722         for ( i = 0; i < num_escorts; i++ ) {
 
 1724                 if ( escort_objnum >= 0 ) {
 
 1728                                 if ( will_collide ) {
 
 1792         float           time=-1.0f, total_dist, speed;
 
 1797         asp = &Asteroids[asteroid_objp->
instance];
 
 1807                 if ( total_dist < 0 ) {
 
 1811                 time = total_dist/speed;
 
 1831         if ( (
stristr(asip->
name, 
"Asteroid") != NULL) ) {
 
 1896                         Warning(
LOCATION, 
"Invalid asteroid reference %i used for $Split in asteroids table, ignoring.", split_type);
 
 1926                 "Cannot parse asteroids/debris if there " 
 1927                 "are no species for them to belong to." 
 1953                         if (tally >= max_asteroids)
 
 1960                                 SCP_string msg(
"Ignoring extra asteroid/debris '");
 
 1961                                 msg.append(new_asteroid.
name);
 
 1964                                 parsed_asteroids.push_back(msg);
 
 1971                                 msg.append(
"Parsing asteroid: '");
 
 1972                                 msg.append(new_asteroid.
name);
 
 1973                                 msg.append(
"' as a '");
 
 1974                                 msg.append((species == 0) ? 
"generic" : 
Species_info[species - 1].species_name);
 
 1978                                         msg.append(
" small\n");
 
 1981                                         msg.append(
" medium\n");
 
 1984                                         msg.append(
" large\n");
 
 1988                                                 "Important numbers:\n" 
 1990                                                 "\tNUM_DEBRIS_SIZES: %d\n",
 
 1991                                                 tally, NUM_DEBRIS_SIZES
 
 1993                                         msg.append(
" unknown\n");
 
 1995                                 parsed_asteroids.push_back(msg);
 
 1997                                 Asteroid_info.push_back(new_asteroid);
 
 2003                 if (tally != max_asteroids)
 
 2007                                 iter != parsed_asteroids.end(); ++iter)
 
 2009                                 mprintf((
"Asteroid.tbl as parsed:\n"));
 
 2010                                 mprintf((
"%s", iter->c_str()));
 
 2014                                 "Found %d asteroids/debris when %d expected\n\n" 
 2015                                 "<Number expected> = <Number of species> * %d + %d generic asteroids\n" 
 2018                                 "Run a debug build to see a list of all parsed asteroids\n",
 
 2020                                 "See the debug.log for a listing of all parsed asteroids\n",
 
 2022                                 tally, max_asteroids,
 
 2028                 Asteroid_impact_explosion_ani = -1;
 
 2034                         Asteroid_impact_explosion_ani = 
bm_load_animation(impact_ani_file, &num_frames, NULL, NULL, 1);
 
 2051                         vm_vec_make(&Asteroid_icon_closeup_position, 0.0
f, 0.0
f, -334.0
f);  
 
 2063                 mprintf((
"TABLES: Unable to parse '%s'!  Error message = %s.\n", 
"asteroid.tbl", e.what()));
 
 2073         object  *asteroid_objp;
 
 2105                 float           radius = ship_objp->
radius*2.0f;
 
 2153         object  *asteroid_objp, *player_target;
 
 2160                 player_target = NULL;
 
 2168                 asp = &Asteroids[asteroid_objp->
instance];
 
 2174                 if ( asteroid_objp == player_target ) {
 
 2194         object  *asteroid_objp, *closest_asteroid_objp = NULL;
 
 2196         float           dist, closest_dist = 999999.0f;
 
 2203                 asp = &Asteroids[asteroid_objp->
instance];
 
 2211                 if ( dist < closest_dist ) {
 
 2212                         closest_dist = dist;
 
 2213                         closest_asteroid_objp = asteroid_objp;
 
 2217         if ( closest_asteroid_objp ) {
 
 2227                 nprintf(( 
"Paging", 
"Paging in asteroids\n" ));
 
 2237                                 asip = &Asteroid_info[
i];
 
void asteroid_sub_create(object *parent_objp, int asteroid_type, vec3d *relvec)
 
void mc_info_init(mc_info *mc)
 
asteroid_obj Asteroid_obj_list
 
void asteroid_wrap_pos(object *objp, asteroid_field *asfieldp)
 
polymodel * modelp[NUM_DEBRIS_POFS]
 
int model_collide(mc_info *mc_info_obj)
 
float asteroid_create_explosion(object *objp)
 
void asteroid_aim_at_target(object *objp, object *asteroid_objp, float delta_time)
 
int timestamp(int delta_ms)
 
#define MULTIPLAYER_CLIENT
 
int asteroid_in_inner_bound(asteroid_field *asfieldp, vec3d *pos, float delta)
 
#define ASTEROID_OBJ_USED
 
#define MEDIUM_DEBRIS_WEIGHT
 
weapon Weapons[MAX_WEAPONS]
 
float vm_vec_mag_quick(const vec3d *v)
 
#define TARGET_DISPLAY_DIST
 
void vm_vec_scale_add(vec3d *dest, const vec3d *src1, const vec3d *src2, float k)
 
int fireball_asteroid_explosion_type(asteroid_info *aip)
 
float frand_range(float min, float max)
Return a floating point number in the range min..max. 
 
int weapon_area_calc_damage(object *objp, vec3d *pos, float inner_rad, float outer_rad, float max_blast, float max_damage, float *blast, float *damage, float limit)
 
polymodel * model_get(int model_num)
 
weapon_info Weapon_info[MAX_WEAPON_TYPES]
 
void RemHookVar(char *name)
 
SCP_vector< game_snd > Snds
 
int get_debris_weight(int ship_debris_index)
 
float vm_vec_mag(const vec3d *v)
 
#define FIREBALL_LARGE_EXPLOSION
 
asteroid Asteroids[MAX_ASTEROIDS]
 
matrix * vm_angles_2_matrix(matrix *m, const angles *a)
 
void model_get_rotating_submodel_list(SCP_vector< int > *submodel_vector, object *objp)
 
int hud_escort_num_ships_on_list()
 
int asteroid_check_collision(object *pasteroid, object *other_obj, vec3d *hitpos, collision_info_struct *asteroid_hit_info)
 
float vm_vec_normalize_quick(vec3d *src)
 
void _cdecl void void _cdecl void _cdecl Warning(char *filename, int line, SCP_FORMAT_STRING const char *format,...) SCP_FORMAT_STRING_ARGS(3
 
void lerp(float *goal, float f1, float f2, float scale)
 
#define SUBMODEL_NO_ROT_HIT
 
float detail_depth[MAX_MODEL_DETAIL_LEVELS]
 
#define ASTEROID_TYPE_SMALL
 
float side_slip_time_const
 
#define list_append(head, elem)
 
void asteroid_parse_tbl()
 
char pof_files[NUM_DEBRIS_POFS][MAX_FILENAME_LEN]
 
void set_flags(uint flags)
 
struct vec3d::@225::@227 xyz
 
void static_randvec(int num, vec3d *vp)
[To be described] 
 
void asteroid_parse_section(asteroid_info *asip)
 
int get_debris_from_same_group(int index)
 
void send_asteroid_throw(object *objp)
 
void random_shuffle(int *first, int *last)
 
float model_get_core_radius(int modelnum)
 
ai_info Ai_info[MAX_AI_INFO]
 
vec3d * vm_vec_rotate(vec3d *dest, const vec3d *src, const matrix *m)
 
#define Assertion(expr, msg,...)                                                                        
 
#define END_OF_LIST(head)
 
float fireball_radius_multiplier
 
int set_asteroid_throw_objnum()
 
void vm_vec_random_cone(vec3d *out, const vec3d *in, float max_angle, const matrix *orient)
 
void vm_vec_scale_add2(vec3d *dest, const vec3d *src, float k)
 
std::basic_string< char, std::char_traits< char >, std::allocator< char > > SCP_string
 
GLenum GLenum GLenum GLenum GLenum scale
 
int required_string_either(char *str1, char *str2)
Checks for one of two required strings. 
 
#define MAX_FIREBALL_TYPES
 
GLenum GLuint GLenum GLsizei const GLchar * buf
 
void hud_target_add_display_list(object *objp, vertex *target_point, vec3d *target_pos, int correction, color *bracket_clr, char *name, int flags)
 
void asc_get_relvec(vec3d *relvec, object *other_obj, vec3d *hitpos)
 
char Asteroid_icon_closeup_model[NAME_LENGTH]
 
void asteroid_test_collide(object *pasteroid_obj, object *pship_obj, mc_info *mc, bool lazy=false)
 
float vm_vec_mag_squared(const vec3d *v)
 
void asteroid_target_closest_danger()
 
script_state Script_system("FS2_Open Scripting")
 
Container & split(Container &result, const typename Container::value_type &s, const typename Container::value_type &delimiters, split_struct::empties_t empties=split_struct::empties_ok)
 
void stuff_float(float *f)
 
int hud_escort_return_objnum(int index)
 
int bm_load_animation(const char *real_filename, int *nframes, int *fps, int *keyframe, int can_drop_frames, int dir_type)
Loads a bitmap sequance so we can draw with it. 
 
#define IS_VEC_NULL_SQ_SAFE(v)
 
void asteroid_level_init()
 
void asteroid_maybe_break_up(object *pasteroid_obj)
 
int num_initial_asteroids
 
#define ASTEROID_MIN_COLLIDE_TIME
 
vec3d heavy_collision_cm_pos
 
#define PM_FLAG_HAS_INTRINSIC_ROTATE
 
void model_render_queue(model_render_params *interp, draw_list *scene, int model_num, matrix *orient, vec3d *pos)
 
void model_instance_find_world_point(vec3d *outpnt, vec3d *mpnt, int model_instance_num, int submodel_num, const matrix *objorient, const vec3d *objpos)
 
void asteroid_level_close()
 
void send_asteroid_hit(object *objp, object *other_objp, vec3d *hitpos, float damage)
 
void vm_vec_add2(vec3d *dest, const vec3d *src)
 
void model_delete_instance(int model_instance_num)
 
GLdouble GLdouble GLdouble r
 
#define MAX_ASTEROID_DETAIL_LEVELS
 
struct matrix::@228::@230 vec
 
void vm_vec_scale(vec3d *dest, float s)
 
float initial_asteroid_strength
 
#define SMALL_DEBRIS_WEIGHT
 
void asteroid_maybe_reposition(object *objp, asteroid_field *asfieldp)
 
int obj_create(ubyte type, int parent_obj, int instance, matrix *orient, vec3d *pos, float radius, uint flags)
 
ai_profile_t * ai_profile
 
void hud_target_asteroid()
 
void model_clear_instance(int model_num)
 
int asteroid_should_wrap(object *objp, asteroid_field *asfieldp)
 
int asteroid_valid_ship_to_warn_collide(ship *shipp)
 
int snd_play_3d(game_snd *gs, vec3d *source_pos, vec3d *listen_pos, float radius, vec3d *source_vel, int looping, float vol_scale, int priority, vec3d *sound_fvec, float range_factor, int force, bool is_ambient)
 
texture_map maps[MAX_MODEL_TEXTURES]
 
void stuff_string(char *outstr, int type, int len, char *terminators)
 
char * stristr(char *str, const char *substr)
 
int ship_get_SIF(ship *shipp)
 
int asteroid_will_collide(object *pasteroid_obj, object *escort_objp)
 
void vm_vec_sub2(vec3d *dest, const vec3d *src)
 
void world_find_model_instance_point(vec3d *out, vec3d *world_pt, const polymodel_instance *pmi, int submodel_num, const matrix *orient, const vec3d *pos)
 
#define MAX_ASTEROID_OBJS
 
submodel_instance * submodel
 
void asteroid_render_DEPRECATED(object *obj)
 
ubyte g3_rotate_vertex(vertex *dest, const vec3d *src)
 
int required_string(const char *pstr)
 
float vm_vec_normalized_dir(vec3d *dest, const vec3d *end, const vec3d *start)
 
float vm_vec_dist(const vec3d *v0, const vec3d *v1)
 
int optional_string(const char *pstr)
 
void maybe_throw_asteroid(int count)
 
float fireball_lifeleft(object *obj)
 
int model_load(char *filename, int n_subsystems, model_subsystem *subsystems, int ferror=1, int duplicate=0)
 
void read_file_text(const char *filename, int mode, char *processed_text, char *raw_text)
 
void SetHookObject(char *name, object *objp)
 
float asteroid_get_fireball_scale_multiplier(int num)
 
int g3_project_vertex(vertex *point)
 
#define MC_CHECK_SPHERELINE
 
void model_instance_find_obj_dir(vec3d *w_vec, vec3d *m_vec, int model_instance_num, int submodel_num, matrix *objorient)
 
vec3d * vm_vec_unrotate(vec3d *dest, const vec3d *src, const matrix *m)
 
void ship_apply_global_damage(object *ship_objp, object *other_obj, vec3d *force_center, float damage)
 
int iff_x_attacks_y(int team_x, int team_y)
 
#define MC_SUBMODEL_INSTANCE
 
object Objects[MAX_OBJECTS]
 
void asteroid_show_brackets()
 
void stuff_vec3d(vec3d *vp)
 
void asteroid_process_post(object *obj)
 
void inner_bound_pos_fixup(asteroid_field *asfieldp, vec3d *pos)
 
#define vm_vec_make(v, _x, _y, _z)
 
int asteroid_get_random_in_cone(vec3d *pos, vec3d *dir, float ang, int danger)
 
vec3d * vm_vec_avg3(vec3d *dest, const vec3d *src0, const vec3d *src1, const vec3d *src2)
 
asteroid_obj Asteroid_objs[MAX_ASTEROID_OBJS]
 
#define SND_PRIORITY_MUST_PLAY
 
#define ASTEROID_TYPE_MEDIUM
 
void vm_vec_copy_scale(vec3d *dest, const vec3d *src, float s)
 
float asteroid_time_to_impact(object *asteroid_objp)
 
void set_hit_struct_info(collision_info_struct *hit, mc_info *mc, int submodel_rot_hit)
 
void _cdecl void void _cdecl Error(const char *filename, int line, SCP_FORMAT_STRING const char *format,...) SCP_FORMAT_STRING_ARGS(3
 
void vm_vec_rand_vec_quick(vec3d *rvec)
 
int max_incoming_asteroids[NUM_SKILL_LEVELS]
 
void reset_parse(char *text)
 
int model_num[NUM_DEBRIS_POFS]
 
int RunCondition(int condition, char format='\0', void *data=NULL, class object *objp=NULL, int more_data=0)
 
int detail_distance[MAX_ASTEROID_DETAIL_LEVELS]
 
void vm_vec_sub(vec3d *dest, const vec3d *src0, const vec3d *src1)
 
#define LARGE_DEBRIS_WEIGHT
 
#define ASTEROID_UPDATE_COLLIDE_TIMESTAMP
 
#define MULTI_SIG_ASTEROID
 
int stuff_int_list(int *ilp, int max_ints, int lookup_type)
 
#define ASTEROID_CHECK_WRAP_TIMESTAMP
 
typedef float(SCP_EXT_CALLCONV *SCPTRACKIR_PFFLOATVOID)()
 
void asteroid_create_all()
 
void asteroid_load(int asteroid_info_index, int asteroid_subtype)
 
void asteroid_render(object *obj, draw_list *scene)
 
#define MR_DEPRECATED_NORMAL
 
polymodel_instance * model_get_instance(int model_instance_num)
 
float vm_vec_dist_quick(const vec3d *v0, const vec3d *v1)
 
object * asteroid_create(asteroid_field *asfieldp, int asteroid_type, int asteroid_subtype)
 
void model_render_DEPRECATED(int model_num, matrix *orient, vec3d *pos, uint flags=MR_DEPRECATED_NORMAL, int objnum=-1, int lighting_skip=-1, int *replacement_textures=NULL, int render=MODEL_RENDER_ALL, const bool is_skybox=false)
 
int field_debris_type[MAX_ACTIVE_DEBRIS_TYPES]
 
float frand()
Return random value in range 0.0..1.0- (1.0- means the closest number less than 1.0) 
 
SCP_vector< int > explosion_bitmap_anims
 
int set_target_objnum(ai_info *aip, int objnum)
 
float asteroid_cap_speed(int asteroid_info_index, float speed)
 
#define ASTEROID_TYPE_LARGE
 
int Asteroid_throw_objnum
 
void asteriod_explode_sound(object *objp, int type, int play_loud)
 
int asteroid_collide_objnum(object *asteroid_objp)
 
float Asteroid_icon_closeup_zoom
 
int asteroid_is_targeted(object *objp)
 
float vm_vec_copy_normalize(vec3d *dest, const vec3d *src)
 
float model_get_radius(int modelnum)
 
#define MULTIPLAYER_MASTER
 
An overhauled/updated debug console to allow monitoring, testing, and general debugging of new featur...
 
#define MC_ONLY_BOUND_BOX
 
void asteroid_process_pre(object *objp)
 
SCP_vector< ship_info > Ship_info
 
void asteroid_update_collide_flag(object *asteroid_objp)
 
int asteroid_obj_list_add(int objnum)
 
#define timestamp_elapsed(stamp)
 
SCP_vector< species_info > Species_info
 
#define OF_SHOULD_BE_DEAD
 
void asteroid_obj_list_remove(object *obj)
 
#define list_remove(head, elem)
 
GLsizei GLsizei GLuint * obj
 
float vm_vec_dot(const vec3d *v0, const vec3d *v1)
 
void send_asteroid_create(object *new_objp, object *parent_objp, int asteroid_type, vec3d *relvec)
 
void asteroid_hit(object *pasteroid_obj, object *other_obj, vec3d *hitpos, float damage)
 
debris_genre_t debris_genre
 
#define timestamp_rand(a, b)
 
void weapon_area_apply_blast(vec3d *force_apply_pos, object *ship_objp, vec3d *blast_pos, float blast, int make_shockwave)
 
DCF_BOOL2(asteroids, Asteroids_enabled,"enables or disables asteroids","Usage: asteroids [bool]\nTurns asteroid system on/off.  If nothing passed, then toggles it.\n")
 
void scoring_eval_hit(object *hit_obj, object *other_obj, int from_blast)
 
int count_incident_asteroids()
 
#define FIREBALL_ASTEROID
 
void asteroid_verify_collide_objnum(asteroid *asp)
 
asteroid_field Asteroid_field
 
ushort multi_assign_network_signature(int what_kind)
 
int asteroid_in_inner_bound_with_axes(asteroid_field *asfieldp, vec3d *pos, float delta)
 
#define TARGET_DISPLAY_LEAD
 
particle * particle_create(particle_info *pinfo)
 
void asteroid_do_area_effect(object *asteroid_objp)
 
int model_create_instance(bool is_ship, int model_num)
 
void asteroid_update_collide(object *objp)
 
void set_object_number(int num)
 
#define MAX_ACTIVE_DEBRIS_TYPES
 
bool IsConditionOverride(int action, object *objp=NULL)
 
SCP_vector< asteroid_info > Asteroid_info
 
void vm_vec_add(vec3d *dest, const vec3d *src0, const vec3d *src1)
 
SCP_vector< asteroid_split_info > split_info
 
int impact_weapon_expl_index
 
matrix vmd_identity_matrix
 
#define MR_DEPRECATED_IS_ASTEROID
 
void asteroid_obj_list_init()
 
float static_randf(int num)
Return a random float in 0.0f .. 1.0f- (ie, it will never return 1.0f). 
 
int damage_type_add(char *name)
 
vec3d Asteroid_icon_closeup_position
 
float static_randf_range(int num, float min, float max)
Return a random float within a range. Note: min and max are inclusive. 
 
vec3d light_collision_cm_pos
 
void asteroid_delete(object *obj)
 
#define OBJ_RECALC_PAIRS(obj_to_reset)
 
float vm_vec_normalize(vec3d *v)
 
int fireball_create(vec3d *pos, int fireball_type, int render_type, int parent_obj, float size, int reverse, vec3d *velocity, float warp_lifetime, int ship_class, matrix *orient_override, int low_res, int extra_flags, int warp_open_sound, int warp_close_sound)