public void Occupy(IOccupyPositions occupier) { occupier.OccupierTransform.localPosition = position + occupier.PositionOffset; occupier.OccupierTransform.rotation = Quaternion.Euler(eulers); currentOccupant = occupier; occupier.ReleaseOccupier += OnReleaseOccupierSetThatShitFree; }
public bool TryPlaceObjectInOccupiablePosition(IOccupyPositions occupier) { var nextPosition = this.GetNext(); if (nextPosition != null) { nextPosition.Occupy(occupier); return(true); } return(false); }
private void ReleaseOccupier(IOccupyPositions occupier, Action <GameObject> destructionMethod = null) { if (this.IsOccupiedBy(occupier)) { currentOccupant = null; } if (destructionMethod != null) { destructionMethod(occupier.OccupierTransform.gameObject); } else { occupier.ReleaseOccupier -= OnReleaseOccupierSetThatShitFree; } }
public bool IsOccupiedBy(IOccupyPositions occupier) { return(currentOccupant != null && currentOccupant == occupier); }