服务端倒带(Server-Side Rewind)命中判定系统

这个图要从右向左看

3.3 🔑 帧查找(双链表二分查找)

cpp 复制代码
// 第368-423行
FFramePackage GetFrameToCheck(ABlasterCharacter* HitCharacter, float HitTime)
{
    const TDoubleLinkedList<FFramePackage>& History = HitCharacter->GetLagCompensation()->FrameHistory;
    
    // 边界检查
    if (History.GetTail()->GetValue().Time > HitTime) return FFramePackage(); // 延迟太大
    if (History.GetTail()->GetValue().Time == HitTime) return History.GetTail()->GetValue();
    if (History.GetHead()->GetValue().Time <= HitTime) return History.GetHead()->GetValue();

    // ═══ 双指针二分查找 ═══
    auto* Younger = History.GetHead(); // 较新帧
    auto* Older = Younger;              // 较旧帧
    while (Older->GetValue().Time > HitTime)
    {
        if (Older->GetNextNode() == nullptr) break;
        Older = Older->GetNextNode();
        if (Older->GetValue().Time > HitTime) Younger = Older;
    }
    // 此时: Older.Time <= HitTime < Younger.Time

    if (Older->GetValue().Time == HitTime)
        return Older->GetValue();  // 精确匹配

    return InterpBetweenFrames(Older->GetValue(), Younger->GetValue(), HitTime);
}
相关推荐
SimonKing1 分钟前
DeepSeek 新模型免费白嫖,夯夯夯,赶紧用起来
java·后端·程序员
夕阳_醉了2 分钟前
让 AI 回答“打字般”浮现:用 Vue 3 + DeepSeek 实现流式聊天
前端·vue.js·人工智能
Young Doro5 分钟前
从平衡表征到最小充分因果表征:端到端神经网络因果效应估计
算法
0+11111 分钟前
算法 --递归
算法·leetcode
打工仔折腾 AI12 分钟前
介入式脑机接口的跨尺度解码与闭环调控:从算法落地到后端工程实践
人工智能·后端·python·深度学习·算法·ai agent 实战
SabrinaW71113 分钟前
基于 C++17 与 RTTR 的注册式对象工厂:配置驱动的动态对象创建
java·前端·数据库
Amos_Web25 分钟前
Rspack 源码解析(二十九):CopyRspackPlugin 如何用 glob 把静态文件复制进产物
前端
zhangx1234_26 分钟前
javaEE 多线程4
java·开发语言
铁皮饭盒27 分钟前
刷到 FDE 岗位那一刻,我还以为前端又活了
前端·后端
酷炫码神42 分钟前
Day 9|Vue Router:把单页后台拆成能跳转的多页面
前端·javascript·vue.js