服务端倒带(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);
}
相关推荐
阿俊-全栈开发1 小时前
LikeShop 单商户SaaS商城分销模块二开:佣金计算与结算逻辑实现
java·开发语言·微服务·likeshop·likeshop开源商城·likeshop多商户
奕鼎竜瑆3 小时前
Solid 前端响应式开发从零到精通
前端·人工智能
动恰客流统计3 小时前
景区客流统计怎么做?兼顾管控与运营的实施方案解析
大数据·前端·人工智能
wuminyu4 小时前
C++协程实现接收端的零拷贝Buffer管理原理剖析
java·linux·c语言·jvm·c++
小蒋学算法4 小时前
算法-交替删除操作后最后剩下的整数-跟着灵茶山艾府学算法
数据结构·算法
派小心.4 小时前
A/B测试工具免费版够用吗?
前端·数据分析
荆棘鸟智能4 小时前
林业遥感长势评估怎么做?从NDVI时序分析到LiDAR蓄积量回归
人工智能·算法·智慧林业
前端snow5 小时前
ai agent --- redis 缓存
前端
hhb_6185 小时前
AIRAGDebug:一键定位RAG链路异常
人工智能·python·算法
duanshu_5 小时前
官网表单与下载异常怎么排查?五个环节定位故障
前端·自动化·flyweight