Мы стараемся как можем. Никак не дотянем до запуска бетатеста, даже закрытого. Сейчас необходимо продвинуть другой проект до 15 числа, так что не знаю когда начнется ЗБТ.
В скрипты это нельзя конвертировать. Это готовая программа, работающая так, как это выглядит визуально. Да и какой смысл конвертировать в скрипты и потом на них вешать снова объекты?
Планируется визуальная отладка, в которой в рантайм режиме на открытом скрипте можно будет посмотреть все промежуточные данные на входах и выходах блоков. Принцип работы аналогичен скрипту, унаследованному от MonoBehaviour, но работает это на нашем ядре.
У нас собственная сериализация, которая поддерживает практически все стандартные ValueType (byte, long, double, ArrayList, List<>, Dictionary<,>, HashTable и т.д.) Их массивы и списки. Можно даже сохранить во входной переменной блока AnimationCurve, которую потом можно использовать для интерполяции при движении объекта. В видео выше это показано.
Система расширяемая. Достаточно написать свой собственный блок в виде класса, унаследованного от LogicBlock и система при открытии окна его найдет (не зависимо где он находится в проекте, или в подключенной dll). Вот пример:
[VisualLogicBlock("SmoothStep", "UnityEngine/Mathf", ParentName = "Mathf Do")]
public class MathfSmoothStepDo : LogicBlock
{
[Parameter(VariableType.In, typeof(float), Name = "from")]
public Variable fromIn;
[Parameter(VariableType.In, typeof(float), Name = "to")]
public Variable toIn;
[Parameter(VariableType.In, typeof(float), Name = "t")]
public Variable tIn;
[Parameter(VariableType.Out, typeof(float), Name = "result")]
public Variable result;
public override void OnInitializeDefaultData()
{
RegisterOutputTrigger("Exit");
}
[EntryTrigger]
public void In()
{
result.Value = UnityEngine.Mathf.SmoothStep((float)fromIn.Value, (float)toIn.Value, (float)tIn.Value);
ActivateTrigger();
}
public override bool useCustomTriggers { get { return true; } }
}
Результатом будет такой блок:
Так что нужна вам такая система или нет, решать Вам
UPD: Возможно будет поддержка логических блоков, написанных на JavaScript. Об этом узнаем чуть позже, когда упакуем ядро в dll.