服务端倒带(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 小时前
@AliasFor 注解
java·spring
飞翔中文网1 小时前
Java学习笔记之接口
java·笔记·学习
宋浮檀s1 小时前
应急响应——Web高危漏洞应急(SQL注入+XSS跨站+文件上传)
前端·网络·安全·web安全·xss
前端后腿哥1 小时前
UNIAPPX UTS插件Widget开发完整教程(Android版)
前端·uni-app
MaCa .BaKa1 小时前
56-非遗手工艺品定制平台系统
java·vue.js·spring boot·mysql·maven·非遗手工制作平台系统·非遗制作
吃好睡好便好1 小时前
矩阵的左除和右除
人工智能·学习·线性代数·算法·矩阵
lili00121 小时前
AI编程三件套CI集成与质量门禁:从“看起来对“到“证据确凿“
java·人工智能·python·ci/cd·ai编程
大家的林语冰1 小时前
AI 遥控代码截图,录制终端动画,定制自动化批量制图流程,解放你的双手~
前端·ai编程·trae
雪之下雪乃的代码日记1 小时前
认识Java中集合框架
java·开发语言·笔记