Пример #1
0
    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);
    }
Пример #3
0
    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;
        }
    }
Пример #4
0
 public bool IsOccupiedBy(IOccupyPositions occupier)
 {
     return(currentOccupant != null && currentOccupant == occupier);
 }