FS2_Open
Open source remastering of the Freespace 2 engine
multi_obj.cpp File Reference
#include <algorithm>
#include "network/multi_obj.h"
#include "globalincs/globals.h"
#include "freespace2/freespace.h"
#include "io/timer.h"
#include "io/key.h"
#include "globalincs/linklist.h"
#include "network/multimsgs.h"
#include "network/multiutil.h"
#include "network/multi_options.h"
#include "network/multi_rate.h"
#include "network/multi.h"
#include "object/object.h"
#include "ship/ship.h"
#include "playerman/player.h"
#include "math/spline.h"
#include "physics/physics.h"
#include "ship/afterburner.h"
#include "cfile/cfile.h"
#include "debugconsole/console.h"

Go to the source code of this file.

Macros

#define OO_MAX_SIZE   480
 
#define OO_POS_UPDATE_TOLERANCE   100.0f
 
#define OO_POS_NEW   (1<<0)
 
#define OO_ORIENT_NEW   (1<<1)
 
#define OO_HULL_NEW   (1<<2)
 
#define OO_AFTERBURNER_NEW   (1<<3)
 
#define OO_SUBSYSTEMS_AND_AI_NEW   (1<<4)
 
#define OO_PRIMARY_BANK   (1<<5)
 
#define OO_PRIMARY_LINKED   (1<<6)
 
#define OO_TRIGGER_DOWN   (1<<7)
 
#define OO_VIEW_CONE_DOT   (0.1f)
 
#define OO_VIEW_DIFF_TOL   (0.15f)
 
#define OO_MAX_TIMESTAMP   2500
 
#define OO_NEAR   0
 
#define OO_NEAR_DIST   (200.0f)
 
#define OO_MIDRANGE   1
 
#define OO_MIDRANGE_DIST   (600.0f)
 
#define OO_FAR   2
 
#define OO_FAR_DIST   (1400.0f)
 
#define OO_HULL_SHIELD_TIME   600
 
#define OO_SUBSYS_TIME   1000
 
#define PACK_PERCENT(v)   { ubyte upercent; if(v < 0.0f){v = 0.0f;} upercent = (v * 255.0f) <= 255.0f ? (ubyte)(v * 255.0f) : (ubyte)255; memcpy(data + packet_size + header_bytes, &upercent, sizeof(ubyte)); packet_size++; }
 
#define PACK_BYTE(v)   { memcpy( data + packet_size + header_bytes, &v, 1 ); packet_size += 1; }
 
#define PACK_USHORT(v)   { short swap = INTEL_SHORT(v); memcpy( data + packet_size + header_bytes, &swap, sizeof(short) ); packet_size += sizeof(short); }
 
#define PACK_SHORT(v)   { ushort swap = INTEL_SHORT(v); memcpy( data + packet_size + header_bytes, &swap, sizeof(ushort) ); packet_size += sizeof(ushort); }
 
#define PACK_INT(v)   { int swap = INTEL_INT(v); memcpy( data + packet_size + header_bytes, &swap, sizeof(int) ); packet_size += sizeof(int); }
 
#define UNPACK_PERCENT(v)   { ubyte temp_byte; memcpy(&temp_byte, data + offset, sizeof(ubyte)); v = (float)temp_byte / 255.0f; offset++;}
 
#define OO_LIMIT_LOW   1800
 
#define OO_LIMIT_MED   3400
 
#define OO_LIMIT_HIGH   100000000
 
#define OO_CIRATE   85
 
#define RATE_UPDATE_TIME   1250
 

Functions

void multi_oo_calc_interp_splines (int ship_index, vec3d *cur_pos, matrix *cur_orient, physics_info *cur_phys_info, vec3d *new_pos, matrix *new_orient, physics_info *new_phys_info)
 
bool multi_oo_sort_func (const short &index1, const short &index2)
 
void multi_oo_build_ship_list (net_player *pl)
 
int multi_oo_pack_client_data (ubyte *data)
 
int multi_oo_pack_data (net_player *pl, object *objp, ubyte oo_flags, ubyte *data_out)
 
int multi_oo_unpack_client_data (net_player *pl, ubyte *data)
 
int multi_oo_unpack_data (net_player *pl, ubyte *data)
 
void multi_oo_reset_timestamp (net_player *pl, object *objp, int range, int in_cone)
 
void multi_oo_reset_status_timestamp (object *objp, int player_index)
 
void multi_oo_reset_subsys_timestamp (object *objp, int player_index)
 
int multi_oo_maybe_update (net_player *pl, object *obj, ubyte *data)
 
void multi_oo_process_all (net_player *pl)
 
void multi_oo_process ()
 
void multi_oo_process_update (ubyte *data, header *hinfo)
 
void multi_oo_gameplay_init ()
 
void multi_oo_send_control_info ()
 
void multi_oo_send_changed_object (object *changedobj)
 
void multi_oo_display ()
 
 dc_printf ("Ganularity set to %i", OO_gran)
 
void multi_oo_server_process ()
 
void multi_oo_client_process ()
 
void multi_oo_update_server_rate ()
 
void multi_oo_rate_process ()
 
void multi_oo_rate_init_all ()
 
void multi_oo_rate_init (net_player *pl)
 
int multi_oo_rate_exceeded (net_player *pl)
 
int multi_oo_cirate_can_send ()
 
void multi_oo_reset_sequencing ()
 
int multi_oo_is_interp_object (object *objp)
 
void multi_oo_interp (object *objp)
 
 dc_printf ("oo_error set to %f", oo_error)
 
void oo_update_time ()
 
 dc_printf ("%showing interp splines", display_oo_bez?"S":"Not s")
 
void oo_display ()
 

Variables

float oo_arrive_time [MAX_SHIPS][5]
 
int oo_arrive_time_count [MAX_SHIPS]
 
float oo_arrive_time_avg_diff [MAX_SHIPS]
 
float oo_arrive_time_next [MAX_SHIPS]
 
int oo_interp_count [MAX_SHIPS]
 
vec3d oo_interp_points [MAX_SHIPS][2]
 
bez_spline oo_interp_splines [MAX_SHIPS][2]
 
bool Multi_oo_afterburn_hack = false
 
int Multi_oo_target_update_times [MAX_OBJ_UPDATE_LEVELS]
 
int Multi_oo_front_near_update_times [MAX_OBJ_UPDATE_LEVELS]
 
int Multi_oo_front_medium_update_times [MAX_OBJ_UPDATE_LEVELS]
 
int Multi_oo_front_far_update_times [MAX_OBJ_UPDATE_LEVELS]
 
int Multi_oo_rear_near_update_times [MAX_OBJ_UPDATE_LEVELS]
 
int Multi_oo_rear_medium_update_times [MAX_OBJ_UPDATE_LEVELS]
 
int Multi_oo_rear_far_update_times [MAX_OBJ_UPDATE_LEVELS]
 
short OO_ship_index [MAX_SHIPS]
 
int OO_update_index = -1
 
objectOO_player_obj
 
int OO_sort = 1
 
int Multi_cirate_stamp = -1
 
int Multi_cirate_can_send = 1
 
int OO_server_rate = -1
 
int OO_client_rate = -1
 
int OO_server_rate_stamp = -1
 
int OO_gran = 1
 
float oo_error = 0.8f
 
int display_oo_bez = 0
 

Macro Definition Documentation

#define OO_AFTERBURNER_NEW   (1<<3)

Definition at line 63 of file multi_obj.cpp.

#define OO_CIRATE   85

Definition at line 1558 of file multi_obj.cpp.

#define OO_FAR   2

Definition at line 80 of file multi_obj.cpp.

#define OO_FAR_DIST   (1400.0f)

Definition at line 81 of file multi_obj.cpp.

#define OO_HULL_NEW   (1<<2)

Definition at line 62 of file multi_obj.cpp.

#define OO_HULL_SHIELD_TIME   600

Definition at line 84 of file multi_obj.cpp.

#define OO_LIMIT_HIGH   100000000

Definition at line 1555 of file multi_obj.cpp.

#define OO_LIMIT_LOW   1800

Definition at line 1553 of file multi_obj.cpp.

#define OO_LIMIT_MED   3400

Definition at line 1554 of file multi_obj.cpp.

#define OO_MAX_SIZE   480

Definition at line 54 of file multi_obj.cpp.

#define OO_MAX_TIMESTAMP   2500

Definition at line 73 of file multi_obj.cpp.

#define OO_MIDRANGE   1

Definition at line 78 of file multi_obj.cpp.

#define OO_MIDRANGE_DIST   (600.0f)

Definition at line 79 of file multi_obj.cpp.

#define OO_NEAR   0

Definition at line 76 of file multi_obj.cpp.

#define OO_NEAR_DIST   (200.0f)

Definition at line 77 of file multi_obj.cpp.

#define OO_ORIENT_NEW   (1<<1)

Definition at line 61 of file multi_obj.cpp.

#define OO_POS_NEW   (1<<0)

Definition at line 60 of file multi_obj.cpp.

#define OO_POS_UPDATE_TOLERANCE   100.0f

Definition at line 57 of file multi_obj.cpp.

#define OO_PRIMARY_BANK   (1<<5)

Definition at line 65 of file multi_obj.cpp.

#define OO_PRIMARY_LINKED   (1<<6)

Definition at line 66 of file multi_obj.cpp.

#define OO_SUBSYS_TIME   1000

Definition at line 85 of file multi_obj.cpp.

#define OO_SUBSYSTEMS_AND_AI_NEW   (1<<4)

Definition at line 64 of file multi_obj.cpp.

#define OO_TRIGGER_DOWN   (1<<7)

Definition at line 67 of file multi_obj.cpp.

#define OO_VIEW_CONE_DOT   (0.1f)

Definition at line 69 of file multi_obj.cpp.

#define OO_VIEW_DIFF_TOL   (0.15f)

Definition at line 70 of file multi_obj.cpp.

#define PACK_BYTE (   v)    { memcpy( data + packet_size + header_bytes, &v, 1 ); packet_size += 1; }

Definition at line 349 of file multi_obj.cpp.

#define PACK_INT (   v)    { int swap = INTEL_INT(v); memcpy( data + packet_size + header_bytes, &swap, sizeof(int) ); packet_size += sizeof(int); }

Definition at line 352 of file multi_obj.cpp.

#define PACK_PERCENT (   v)    { ubyte upercent; if(v < 0.0f){v = 0.0f;} upercent = (v * 255.0f) <= 255.0f ? (ubyte)(v * 255.0f) : (ubyte)255; memcpy(data + packet_size + header_bytes, &upercent, sizeof(ubyte)); packet_size++; }

Definition at line 348 of file multi_obj.cpp.

#define PACK_SHORT (   v)    { ushort swap = INTEL_SHORT(v); memcpy( data + packet_size + header_bytes, &swap, sizeof(ushort) ); packet_size += sizeof(ushort); }

Definition at line 351 of file multi_obj.cpp.

#define PACK_USHORT (   v)    { short swap = INTEL_SHORT(v); memcpy( data + packet_size + header_bytes, &swap, sizeof(short) ); packet_size += sizeof(short); }

Definition at line 350 of file multi_obj.cpp.

#define RATE_UPDATE_TIME   1250

Definition at line 1567 of file multi_obj.cpp.

#define UNPACK_PERCENT (   v)    { ubyte temp_byte; memcpy(&temp_byte, data + offset, sizeof(ubyte)); v = (float)temp_byte / 255.0f; offset++;}

Definition at line 697 of file multi_obj.cpp.

Function Documentation

dc_printf ( "Ganularity set to %i ,
OO_gran   
)
dc_printf ( "oo_error set to %f ,
oo_error   
)
dc_printf ( "%showing interp splines"  ,
display_oo_bez?"S":"Not s  
)
void multi_oo_build_ship_list ( net_player pl)

Definition at line 199 of file multi_obj.cpp.

void multi_oo_calc_interp_splines ( int  ship_index,
vec3d cur_pos,
matrix cur_orient,
physics_info cur_phys_info,
vec3d new_pos,
matrix new_orient,
physics_info new_phys_info 
)

Definition at line 1970 of file multi_obj.cpp.

int multi_oo_cirate_can_send ( )

Definition at line 1753 of file multi_obj.cpp.

void multi_oo_client_process ( )

Definition at line 1655 of file multi_obj.cpp.

void multi_oo_display ( )

Definition at line 1541 of file multi_obj.cpp.

void multi_oo_gameplay_init ( )

Definition at line 1386 of file multi_obj.cpp.

void multi_oo_interp ( object objp)

Definition at line 1866 of file multi_obj.cpp.

int multi_oo_is_interp_object ( object objp)

Definition at line 1825 of file multi_obj.cpp.

int multi_oo_maybe_update ( net_player pl,
object obj,
ubyte data 
)

Definition at line 1080 of file multi_obj.cpp.

int multi_oo_pack_client_data ( ubyte data)

Definition at line 269 of file multi_obj.cpp.

int multi_oo_pack_data ( net_player pl,
object objp,
ubyte  oo_flags,
ubyte data_out 
)

Definition at line 353 of file multi_obj.cpp.

void multi_oo_process ( )

Definition at line 1336 of file multi_obj.cpp.

void multi_oo_process_all ( net_player pl)

Definition at line 1234 of file multi_obj.cpp.

void multi_oo_process_update ( ubyte data,
header hinfo 
)

Definition at line 1357 of file multi_obj.cpp.

int multi_oo_rate_exceeded ( net_player pl)

Definition at line 1704 of file multi_obj.cpp.

void multi_oo_rate_init ( net_player pl)

Definition at line 1696 of file multi_obj.cpp.

void multi_oo_rate_init_all ( )

Definition at line 1668 of file multi_obj.cpp.

void multi_oo_rate_process ( )

Definition at line 1604 of file multi_obj.cpp.

void multi_oo_reset_sequencing ( )

Definition at line 1820 of file multi_obj.cpp.

void multi_oo_reset_status_timestamp ( object objp,
int  player_index 
)

Definition at line 1068 of file multi_obj.cpp.

void multi_oo_reset_subsys_timestamp ( object objp,
int  player_index 
)

Definition at line 1074 of file multi_obj.cpp.

void multi_oo_reset_timestamp ( net_player pl,
object objp,
int  range,
int  in_cone 
)

Definition at line 1019 of file multi_obj.cpp.

void multi_oo_send_changed_object ( object changedobj)

Definition at line 1485 of file multi_obj.cpp.

void multi_oo_send_control_info ( )

Definition at line 1436 of file multi_obj.cpp.

void multi_oo_server_process ( )

Definition at line 1627 of file multi_obj.cpp.

bool multi_oo_sort_func ( const short &  index1,
const short &  index2 
)

Definition at line 162 of file multi_obj.cpp.

int multi_oo_unpack_client_data ( net_player pl,
ubyte data 
)

Definition at line 578 of file multi_obj.cpp.

int multi_oo_unpack_data ( net_player pl,
ubyte data 
)

Definition at line 698 of file multi_obj.cpp.

void multi_oo_update_server_rate ( )

Definition at line 1765 of file multi_obj.cpp.

void oo_display ( )

Definition at line 2031 of file multi_obj.cpp.

void oo_update_time ( )

Definition at line 2014 of file multi_obj.cpp.

Variable Documentation

int display_oo_bez = 0

Definition at line 2018 of file multi_obj.cpp.

int Multi_cirate_can_send = 1

Definition at line 1560 of file multi_obj.cpp.

int Multi_cirate_stamp = -1

Definition at line 1559 of file multi_obj.cpp.

bool Multi_oo_afterburn_hack = false

Definition at line 51 of file multi_obj.cpp.

int Multi_oo_front_far_update_times[MAX_OBJ_UPDATE_LEVELS]
Initial value:
=
{
750,
350,
150,
66,
}

Definition at line 115 of file multi_obj.cpp.

int Multi_oo_front_medium_update_times[MAX_OBJ_UPDATE_LEVELS]
Initial value:
=
{
250,
180,
120,
66,
}

Definition at line 106 of file multi_obj.cpp.

int Multi_oo_front_near_update_times[MAX_OBJ_UPDATE_LEVELS]
Initial value:
=
{
150,
100,
66,
66,
}

Definition at line 97 of file multi_obj.cpp.

int Multi_oo_rear_far_update_times[MAX_OBJ_UPDATE_LEVELS]
Initial value:
=
{
2500,
1500,
400,
66,
}

Definition at line 142 of file multi_obj.cpp.

int Multi_oo_rear_medium_update_times[MAX_OBJ_UPDATE_LEVELS]
Initial value:
=
{
800,
600,
300,
66,
}

Definition at line 133 of file multi_obj.cpp.

int Multi_oo_rear_near_update_times[MAX_OBJ_UPDATE_LEVELS]
Initial value:
=
{
300,
200,
100,
66,
}

Definition at line 124 of file multi_obj.cpp.

int Multi_oo_target_update_times[MAX_OBJ_UPDATE_LEVELS]
Initial value:
=
{
100,
100,
66,
66,
}

Definition at line 88 of file multi_obj.cpp.

float oo_arrive_time[MAX_SHIPS][5]

Definition at line 39 of file multi_obj.cpp.

float oo_arrive_time_avg_diff[MAX_SHIPS]

Definition at line 41 of file multi_obj.cpp.

int oo_arrive_time_count[MAX_SHIPS]

Definition at line 40 of file multi_obj.cpp.

float oo_arrive_time_next[MAX_SHIPS]

Definition at line 42 of file multi_obj.cpp.

int OO_client_rate = -1

Definition at line 1564 of file multi_obj.cpp.

float oo_error = 0.8f

Definition at line 1952 of file multi_obj.cpp.

int OO_gran = 1

Definition at line 1571 of file multi_obj.cpp.

int oo_interp_count[MAX_SHIPS]

Definition at line 45 of file multi_obj.cpp.

vec3d oo_interp_points[MAX_SHIPS][2]

Definition at line 46 of file multi_obj.cpp.

bez_spline oo_interp_splines[MAX_SHIPS][2]

Definition at line 47 of file multi_obj.cpp.

object* OO_player_obj

Definition at line 159 of file multi_obj.cpp.

int OO_server_rate = -1

Definition at line 1563 of file multi_obj.cpp.

int OO_server_rate_stamp = -1

Definition at line 1568 of file multi_obj.cpp.

short OO_ship_index[MAX_SHIPS]

Definition at line 151 of file multi_obj.cpp.

int OO_sort = 1

Definition at line 160 of file multi_obj.cpp.

int OO_update_index = -1

Definition at line 153 of file multi_obj.cpp.