Пример #1
0
    public void LinkObject(GameObject linkObject)
    {
        // Add / create link data on object when linking, if it doesn't have it
        TileLinkData linkData = linkObject.GetComponent <TileLinkData>();

        if (!linkData)
        {
            linkData = linkObject.AddComponent <TileLinkData>();
            linkData.LinkedManager = this;
        }

        if (linkData.LinkKey.HasValue)
        {
            // If we already have a link, unlink us.
            UnlinkObject(linkObject);
        }

        // No link, so we should link us in at the correct slot now
        Vector3Int key = ToVector3Int(linkObject.transform.position);

        linkData.LinkKey = key;
        List <GameObject> bucket = GetLinkBucket(key);

        bucket.Add(linkObject);
    }
Пример #2
0
    public void UnlinkObject(GameObject linkObject)
    {
        TileLinkData linkData = linkObject.GetComponent <TileLinkData>();

        if (linkData && linkData.LinkKey.HasValue)
        {
            // This object is linked in somewhere, so go and get rid of it
            List <GameObject> bucket = GetLinkBucket(linkData.LinkKey.Value);
            bucket.Remove(linkObject);
            linkData.LinkKey = null;
        }
    }