Example #1
0
            public int Compare(object x, object y)
            {
                MapPosition a = (MapPosition)x;
                MapPosition b = (MapPosition)y;

                return(a.Distance(Position.Null).CompareTo(b.Distance(Position.Null)));
            }
Example #2
0
        public float Distance(MapPosition t)
        {
            float cx = pos.x - t.pos.x;
            float cy = pos.y - t.pos.y;
            float cz = pos.z - t.pos.z;

            return((float)Math.Sqrt(cx * cx + cy * cy + cz * cz));
        }
Example #3
0
        ArrayList GetNearPoints(int map, Position pos, float distance)
        {
            Hashtable h = data.Get("MAP " + map.ToString());

            if (h == null)
            {
                Log.WriteEvent("GetNearPoints no MAP " + map.ToString());
                return(null);
            }
            ArrayList points = h["PP"] as ArrayList;

            MapPosition m  = new MapPosition(pos, 0);
            int         mh = m.GetHashCode();

            int mhlow = mh - (int)Math.Abs((pos.x + distance) * distance);

            if (mhlow < 0)
            {
                mhlow = 0;
            }

            int mhhigh = mh + (int)Math.Abs((pos.y + distance) * distance);

            ArrayList ret = new ArrayList();

            int center = FindHash(points, mh);

            for (int p = center; p >= 0; p--)
            {
                MapPosition t = points[p] as MapPosition;
                if (t.GetHashCode() < mhlow)
                {
                    break;
                }
                if (t.Distance(m) > distance)
                {
                    continue;
                }
                ret.Add(t);
            }

            for (int p = center; p < points.Count; p++)
            {
                MapPosition t = points[p] as MapPosition;
                if (t.GetHashCode() > mhhigh)
                {
                    break;
                }
                if (t.Distance(m) > distance)
                {
                    continue;
                }
                ret.Add(t);
            }
            return(ret);
        }
Example #4
0
 public void Add(MapPosition t)
 {
     data.Add(t);
 }