AOI
c# AOI algorithm for cross linked list
Install / Use
/learn @qq362946/AOIREADME
1、AOI库介绍
- 使用跳跃表+十字链方式实现的一个AOI库。
- 可做简单的碰撞检测、客户端资源、服务器AOI。
- 测试效率插入、移动、查找均到毫秒一下。
1.1 一个简单的Demo
// 创建一个AOI区域、如果地图过大可以定义多个区域
var zone = new AoiZone();
// AOI的显示区域、每个客户端都可以单独定义区域、这样可以更好的适用于不同的分辨率。
var area = new Vector2(3, 3);
// 添加50个玩家。
for (var i = 1; i <= 50; i++) zone.Enter(i, i, i);
// 刷新key为3的信息。
zone.Refresh(3, area, out var enters);
Console.WriteLine("---------------加入玩家范围的玩家列表--------------");
foreach (var aoiKey in enters)
{
var findEntity = zone[aoiKey];
Console.WriteLine($"X:{findEntity.X.Value} Y:{findEntity.Y.Value}");
}
// 更新key为3的坐标。
var entity = zone.Refresh(3, 20, 20, new Vector2(3, 3), out enters);
Console.WriteLine("---------------离开玩家范围的玩家列表--------------");
foreach (var aoiKey in entity.Leave)
{
var findEntity = zone[aoiKey];
Console.WriteLine($"X:{findEntity.X.Value} Y:{findEntity.Y.Value}");
}
Console.WriteLine("---------------key为3移动后加入玩家范围的玩家列表--------------");
foreach (var aoiKey in enters)
{
var findEntity = zone[aoiKey];
Console.WriteLine($"X:{findEntity.X.Value} Y:{findEntity.Y.Value}");
}
// 离开当前AOI
zone.Exit(50);
2、博客文章
Related Skills
node-connect
351.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
110.7kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
351.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
351.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
