Skip to content

Описание поворотов, которые может делать объект. Расширяется компонентом ItemTurn встраивая (инекция через partial) в сущность Item2.

namespace Tac.ItemMove
{
    public class TurnInfo
    {
        public List<TurnType> TurnSeq; // Список всех возможных поворотов, на которые можно повернуть сущность (см. ниже TurnType)
        public List<Vector2> ViewCorrect; // Сдвиг модели, который нужно выполнить вместе с поворотом (можно использовать если в у модели пивот находится не в центре)
        public TurnType CurrentTurn; // Текущий заданный поворот
        public TurnType Turn() { ... } // Ищет CurrentTurn в списке TurnSeq и возвращает следующий вид поворота
    }
}

TurnType

Перечисление всех возможных видов поворота, последовательность которых нужно сформировать в TurnInfo.TurnSeq. По умолчанию, указаны только поворот на 0, 90, 180, 270 градусов. Можно расширить поворотами на 45 градусов или наоборот исключить какие то повороты, например оставив только 0, 180. Поворот с суффиксом Rev правильно использовать для моделей, которые выглядят в виде буквы "Г" (поворот трубы). Тогда при вращении по часовой стрелки использовать набор обучных углов 0, 90, 180, 270, а при вращении против часовой стрелки Rev0, Rev90, Rev180, Rev270.

При использовании не дефолтного набора углов поворота требует переопределения метода Item2.SetTurn(TurnType argRotateIndex).

    public enum TurnType
    {
        None = 0,
        Angle0 = 1,
        Angle90 = 2,
        Angle180 = 3,
        Angle270 = 4,
        AngleRev0 = 5,
        AngleRev90 = 6,
        AngleRev180 = 7,
        AngleRev270 = 8,
        Angle45 = 9,
        Angle135 = 10,
        Angle225 = 11,
        Angle315 = 12
    }