features features features

This commit is contained in:
Cary Sandvig 2000-12-01 23:40:19 +00:00
parent 6ffb061806
commit db93b0de04

View File

@ -31,6 +31,8 @@ typedef set<PT(Connection)> Clients;
static PT_Node smiley; static PT_Node smiley;
static RenderRelation* my_arc; static RenderRelation* my_arc;
static LPoint3f my_pos; static LPoint3f my_pos;
static LPoint3f target_pos;
static LPoint3f telemetry_pos;
static int hostport = deadrec.GetInt("deadrec-rec-port", 0xdead); static int hostport = deadrec.GetInt("deadrec-rec-port", 0xdead);
static thread* monitor; static thread* monitor;
static bool stop_monitoring; static bool stop_monitoring;
@ -41,6 +43,7 @@ QueuedConnectionReader* reader;
static float clock_skew = 0.; static float clock_skew = 0.;
static bool doing_sync = false; static bool doing_sync = false;
static float my_time; static float my_time;
static bool new_telemetry;
enum TelemetryToken { T_End = 1, T_Pos, T_Vel, T_Num, T_Time, T_Sync }; enum TelemetryToken { T_End = 1, T_Pos, T_Vel, T_Num, T_Time, T_Sync };
enum PredictToken { P_Null, P_Linear }; enum PredictToken { P_Null, P_Linear };
@ -118,7 +121,7 @@ static void* internal_monitor(void*) {
{ {
float x, y, z; float x, y, z;
buff = get_float64(get_float64(get_float64(buff, x), y), z); buff = get_float64(get_float64(get_float64(buff, x), y), z);
my_pos = LPoint3f(x, y, z); telemetry_pos = LPoint3f(x, y, z);
} }
break; break;
case T_Vel: case T_Vel:
@ -151,9 +154,7 @@ static void* internal_monitor(void*) {
buff = get_uint8(buff, byte); buff = get_uint8(buff, byte);
t = (TelemetryToken)byte; t = (TelemetryToken)byte;
} }
// unpack and deal with the datagram now new_telemetry = true;
// DO THIS
// part of this includes logic on when to shutdown, I hope
} }
} }
// sleep for about 100 milliseconds // sleep for about 100 milliseconds
@ -372,13 +373,71 @@ static void deadrec_setup(EventHandler& eh) {
cpopButton->inactive(); cpopButton->inactive();
} }
static void update_smiley(void) { inline static void predict_null(void) {
target_pos = telemetry_pos;
}
inline static void predict_linear(void) {
// DO THIS
target_pos = telemetry_pos;
}
inline static void run_predict(void) {
switch (curr_pred) {
case P_Null:
predict_null();
break;
case P_Linear:
predict_linear();
break;
default:
deadrec_cat->error() << "bad prediction type (" << (int)curr_pred << ")"
<< endl;
}
}
inline static void correction_pop(void) {
my_pos = target_pos;
}
inline static void correction_lerp(void) {
// DO THIS
my_pos = target_pos;
}
inline static void correction_spline(void) {
// DO THIS
my_pos = target_pos;
}
inline static void run_correct(void) {
switch (curr_corr) {
case C_Pop:
correction_pop();
break;
case C_Lerp:
correction_lerp();
break;
case C_Spline:
correction_spline();
break;
default:
deadrec_cat->error() << "bad correction type (" << (int)curr_corr << ")"
<< endl;
}
}
inline static void update_smiley(void) {
LMatrix4f mat = LMatrix4f::translate_mat(my_pos); LMatrix4f mat = LMatrix4f::translate_mat(my_pos);
my_arc->set_transition(new TransformTransition(mat)); my_arc->set_transition(new TransformTransition(mat));
} }
static void event_frame(CPT_Event) { static void event_frame(CPT_Event) {
run_predict();
run_correct();
update_smiley(); update_smiley();
if (new_telemetry)
new_telemetry = false;
} }
static void deadrec_keys(EventHandler& eh) { static void deadrec_keys(EventHandler& eh) {