示例#1
0
    public void SetGrid(PhysicsGrid g, bool remoteOverride)
    {
        if (remoteOverride == false && GetAuthorized() == false)
        {
            return; //not authorized, and it is not a remote update
        }

        if (parentGrid != null && parentGrid.GetGridID() != (ushort)Utilities.ReservedObjectIDs.Unspecified && parentGrid.GetGridID() == g.GetGridID())
        {
            //Debug.Log("No zone change needed");
            return;
        }
        //if we have no parent, do not perform hierarchical safety check
        //or if it is a remote update, also skip hierarchical safety check
        if ((parentGrid == null && g != null) || remoteOverride)
        {
            parentGrid       = g;
            transform.parent = parentGrid.transform;
            parentGrid.SendMessage("OnConfirmObjectEnter", this);
        }
        else
        {
            if (g != null)
            {
                parentGrid = g;
                while (parentGrid.Contains(this) == false)
                {
                    Debug.Log(parentGrid.gameObject.name + " does not contain " + gameObject.name);
                    parentGrid = manager.FindNextGrid(parentGrid);
                    if (parentGrid == null)
                    {
                        Debug.Log("Ran out of grids!");
                    }
                }
                transform.parent = parentGrid.transform;
                parentGrid.SendMessage("OnConfirmObjectEnter", this);
            }
        }
    }