Описание поворотов, которые может делать объект. Расширяется компонентом 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
}