public Prediction(Components.Position pos, Components.Movement mov) { this.pos = pos; this.mov = mov; a = b = c = Vec3.Zero; d = pos.Pos; }
public void Update(Components.Position npos, Components.Movement nmov) { if (pos.Room != npos.Room) { pos.Room = npos.Room; pos.Rot = npos.Rot; pos.Pos = npos.Pos; mov.Vel = nmov.Vel; a = b = c = Vec3.Zero; d = pos.Pos; return; } pos.Rot = npos.Rot; k = 0; d = pos.Pos; c = mov.Vel * LAG; // a = pos - b - c - d // 3a + 2b + c = vel * LAG // 3pos - 3b - 3c - 3d + 2b + c = vel * LAG b = 3 * npos.Pos - 2 * c - 3 * d - nmov.Vel * LAG; a = npos.Pos - b - c - d; }