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); }
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; } }