private List <FirePlace> GetAllConnectedFirePlaces(FirePlace fireplace, FirePlace origin) { var fireplaces = new List <FirePlace>(); foreach (FirePlace fp in fireplace.GetConnectedFireplaces()) { if (fp != null && fp != origin) { fireplaces.Add(fp); fireplaces.AddRange(GetAllConnectedFirePlaces(fp, fireplace)); } } return(fireplaces); }
void OnTriggerStay2D(Collider2D col) { if (col.gameObject.layer == LayerMask.NameToLayer(Layers.PlSpot)) { FirePlace connectedFireplace = col.GetComponent <FirePlace>(); if (_fireplace.IsAccessible && connectedFireplace.IsAccessible && Vector2.Distance(col.bounds.center, _thisCol.bounds.center) < 0.3f) { _fireplace.Connect(connectedFireplace); connectedFireplace.Connect(_fireplace); } else if (_fireplace.IsAccessible == false && _fireplace.GetConnectedFireplaces().Contains(connectedFireplace) && Vector2.Distance(col.bounds.center, _thisCol.bounds.center) > 0.3f) { _fireplace.Disconnect(connectedFireplace); } } }
public void Connect(FirePlace fp) { IsAccessible = false; if (F1 == null) { F1 = fp; } else if (F2 == null) { F2 = fp; } else if (F3 == null) { F3 = fp; } else if (F4 == null) { F4 = fp; } }
public void Disconnect(FirePlace fp) { IsAccessible = true; if (F1 == fp) { F1 = null; } else if (F2 == fp) { F2 = null; } else if (F3 == fp) { F3 = null; } else if (F4 == fp) { F4 = null; } }
void Awake() { _thisCol = GetComponent <CircleCollider2D>(); _fireplace = GetComponent <FirePlace>(); }