interp test 1
[carveJwlIkooP6JGAAIwe30JlM.git] / player_remote.h
index 1360e54b304c9221a26a8e85ebf5de453d1d4bd7..ca96290b241231e7fc1d72c0b235c1675ed429ba 100644 (file)
@@ -8,19 +8,33 @@ struct {
    struct network_player {
       int active;
       u16 board_view_slot, playermodel_view_slot;
+      enum player_subsystem subsystem;
 
       char username[32];
       u32 down_bytes;
       f32 down_kbs;
-
-      enum player_subsystem subsystem;
-      union {
-         struct player_skate_animator _skate;
-         struct player_walk_animator _walk;
-         struct player_dead_animator _dead;
-      } animdata;
    }
-   list[ 32 ];
+   list[32];
+
+   struct interp_buffer {
+      /* collect the most recent 6 frames of animation data */
+      struct interp_frame {
+         int active;
+         f64 timestamp;
+         enum player_subsystem subsystem;
+
+         union interp_animdata {
+            struct player_skate_animator _skate;
+            struct player_walk_animator _walk;
+            struct player_dead_animator _dead;
+         } 
+         data;
+      }
+      frames[6];
+
+      f64 t;
+   }
+   interp_data[32];
 
    m4x3f *final_mtx;
 
@@ -33,5 +47,6 @@ static netplayers;
 static void player_remote_rx_200_300( SteamNetworkingMessage_t *msg );
 static void remote_player_debug_update(void);
 static void remote_player_send_playerframe(void);
+static void animate_remote_player( u32 index );
 
 #endif /* PLAYER_REMOTE_H */