Giter Club home page Giter Club logo

aoi's Introduction

1、AOI库介绍

  1. 使用跳跃表+十字链方式实现的一个AOI库。
  2. 可做简单的碰撞检测、客户端资源、服务器AOI。
  3. 测试效率插入、移动、查找均到毫秒一下。

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、博客文章

AOI算法实现和原理(一) AOI算法实现和原理(二)

aoi's People

Contributors

qq362946 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

aoi's Issues

AoiZone的构造函数错误

AoiZone类得构造函数 public AoiZone(float xLinksLimit, float yLinksLimit)有问题。

        public AoiZone(float xLinksLimit, float yLinksLimit)
        {
            _xLinks = new AoiLinkedList(limit: xLinksLimit);
            _yLinks = new AoiLinkedList(limit: xLinksLimit);
        }

应该是_yLinks = new AoiLinkedList(limit: yLinksLimit);吧

readme示例中的一个key错误

// 更新key为50的坐标。

var entity = zone.Refresh(3, 20, 20, new Vector2(3, 3), out enters);

readme中使用例子这个key应该是写错了吧,跟注释不一样。没翻源码前一脸懵逼

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.