Buffer icon Проекты

FSM для C#

Доделал пакет для Shardy: реализацию машины состояний (finite state machine). Все стейты и триггеры добавляются через билдер, цепочкой.

Finite state machine

Finite state machine

Finite state machine

Для перехода на стейт надо активировать триггер(ы):

fsm.Trigger(Action.Down);
fsm.Trigger(Action.Down);

В таком случае получится такой результат:

initial is standing
on exit standing
on enter sitting
on exit sitting
on enter lying

Ещё подсмотрел, как сгенерить описание для UML диаграммы и отрендерить её на сайте или на этом, по-моему у них один движок:

FSM UML diagram

FSM UML diagram

FSM UML diagram

Чтобы сделать диаграмму более «интуитивной», вместо слова state используется ключевое слово agent, этом случае можно рисовать разные линии.

@startuml
skin rose
title TestFSM
left to right direction
agent Standing
agent Sitting
agent Lying
agent Jumping
note left of Jumping
some help message here
end note
Start --> Standing
Standing --> Sitting : Down
Standing ~~> Jumping : Space
Sitting --> Lying : Down
Sitting --> Standing : Up
Lying --> Sitting : Up
Jumping --> Standing : Down
@enduml

Ещё к каждому переходу можно добавлять условия, (на картинке выше их нет) об этом подробнее в документации.

Если у перехода между состояниями есть условие(я), то линия будет рисоваться пунктирной, а если нет триггера — то с крестиком на конце. Актуально когда состояний и переходов много, можно сгенерить диаграмму и посмотреть нет ли косяков.

Github

Поделиться
Отправить
Запинить
Отправить
 52   16 дн   git   unity   игры   проекты   разработка   с#
Популярное