Ejemplo n.º 1
0
        /// <summary>
        /// 物体发生移动时调用
        /// </summary>
        /// <param name="pRect"></param>
        internal void Move(MGFObject pRect)
        {
            Quadtree now = RetrieveQt(pRect);

            //计算该物体目前所在的位置是否与前一帧所在位置一致
            if (!dic.ContainsKey(pRect) || dic[pRect] == null)
            {
                return;
            }
            if (now != dic[pRect])
            {
                //不一致时重新插入物体
                dic[pRect].Remove(pRect);
                now.Insert(pRect);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 物体发生移动时调用
        /// </summary>
        /// <param name="pRect"></param>
        internal bool Move(MGFObject pRect)
        {
            Quadtree now = RetrieveQt(pRect);

            if (!dic.ContainsKey(pRect) || dic[pRect] == null)
            {
                return(false);
            }
            //计算该物体目前所在的节点是否与前一帧所在位置一致
            if (now != dic[pRect])
            {
                //不一致时重新插入物体
                dic[pRect].Remove(pRect);
                now.Insert(pRect);
                return(true);
            }
            else
            {
                return(false);
            }
        }
Ejemplo n.º 3
0
 /// <summary>
 /// 初始化
 /// </summary>
 /// <param name="mgfList"></param>
 /// <param name="planePos"></param>
 public void Init(MGFObject[] mgfList, Rectangle planePos)
 {
     m_Qt = new Quadtree(0, planePos);
     if (mgfList != null && mgfList.Length != 0)
     {
         for (int i = 0; i < mgfList.Length; i++)
         {
             mgfList[i].Init();
             mgfList[i].MGFEnable();
             m_Objects.Add(mgfList[i]);
             if (mgfList[i].IsCollisionAble != false)
             {
                 m_Qt.Insert(mgfList[i]);
             }
             if (mgfList[i].IsStatic == false)
             {
                 m_DynamicObjs.Add(mgfList[i]);
             }
         }
     }
 }
Ejemplo n.º 4
0
 /// <summary>
 /// 添加物体
 /// </summary>
 /// <param name="mGFObject"></param>
 public void AddObject(MGFObject mGFObject)
 {
     m_Qt.Insert(mGFObject);
 }