InnerCore, в отличии от его предшественника CoreEngine, имеет встроенную поддержку анимаций. Это значит, что для того, чтобы в мире появилась какая-то моделька, не нужно создавать моба. Достаточно создать лишь простейшую анимацию. Всего существует три вида анимаций - базовые анимации, анимации предметов и анимации текста. Давайте рассмотрим их возможности подробнее:
Для создания базовой анимации используется класс Animation.Base, который создает новую анимацию на координатах x, y, z:
var animation = new Animation.Base(x, y, z);
Чтобы отобразить нашу модельку без анимации в мире, достаточно задать рендер анимации и загрузить её:
animation.describe({render: render.getId()});
animation.load();
Стоит отметить, что render может принимать любое значение нативного рендера, как кастомного (render.getId()), так и ванильного.
Для создания динамичных анимаций используется функция loadCustom(callable). В качестве параметра эта функция принимает лишь функцию, в которой мы и будем производить наши изменения в модели. Чтобы изменить рендер, достаточно лишь изменить его объект Render и вызвать метод refresh(). Для изменения расположения будем использовать функцию setPos(x, y, z), которая устанавливает новые координаты объекта в мире. Поскольку часто возникает необходимость изменить координаты относительно текущих, текущие будем получать из объекта coords. Внимание! Не изменяйте объект coords, это не изменит реальное расположение анимации в мире!
И, конечно же, пример:
animation.loadCustom(function(){
this.setPos(this.coords.x + 0.5, this.coords.y, this.coords.z - 0.5);
this.refresh();
});
Замечу, что thisвнутри функции обновления анимации будет указывать на саму анимацию, что и используется в этом примере.
{
render: render,
skin: skin,
scale: scale
}
При этом параметры skin и scale считаются устаревшими, поскольку являются частью объекта рендера, а не самой анимации. Их использовать не следует.
Также можно создать изображение в мире предмета.
var ani_item = new Animation.Item(x, y, z);
В остальном эта анимация похожа на обычную, только настраивается она методом animation.describeItem
ani_item.describeItem({ //Настраиваем характеристики отоюражаемого предмета id: 280, count: 1, data: 0, //Рендерим палку //Устанавливаем размер size: 1, //Устанавливаем выравнивание по оси x/y/z rotation: "x\y\z", //Убираем неровности, если отрисовывается несколько анимаций notRandomize: true });
Также в мире можно отображать в мире текст:
var ani_txt = new Animation.Text(x, y, z); //Настроим отображаемый текст ani_txt.setText(text);