# ct.u

Этот объект содержит ряд полезных служебных функций для облегчения процесса разработки.

# Методы и параметры

# ct.u.ldx(length, direction) and ct.u.lengthDirX(length, direction)

Получает горизонтальную компоненту вектора (длину проекции на ось X).

# ct.u.ldy(length, direction) and ct.u.lengthDirY(length, direction)

Получает вертикальную компоненту вектора.

# ct.u.pdn(x1, y1, x2, y2) and ct.u.pointDirection(x1, y1, x2, y2)

Получает направление вектора, который направлен от (x1; y1) к (x2; y2).

# ct.u.pdc(x1, y1, x2, y2) and ct.u.pointDistance(x1, y1, x2, y2)

Получает расстояние между точками (x1; y1) и (x2; y2).

# ct.u.deltaDir(dir1, dir2)

Возвращает разницу между двумя направлениями в градусах.

# ct.u.clamp(min, val, max)

Возвращает значение val, ограниченное заданными минимумом и максимумом.

# ct.u.lerp(a, b, alpha)

Линейно интерполирует значение от a до b, возвращая a, если alpha = 0 и b, если alpha = 1.

# ct.u.unlerp(a, b, val)

Противоположность ct.u.lerp — возвращает положение val в диапазоне от a до b. Если val внутри этого диапазона, то возвращает значение от 0 до 1.

# ct.u.prect(x1, y1, arg: Array|Copy) and ct.u.pointRectangle(x1, y1, arg: Array|Copy)

Проверяет, находится ли заданная точка (x1; y1) внутри прямоугольника. arg может быть либо массивом координат ([x1, y1, x2, y2]), либо копией с прямоугольной формой.

# ct.u.pcircle(x1, y1, arg: Array|Copy) and ct.u.pointCircle(x1, y1, arg: Array|Copy)

Проверяет, находится ли заданная точка внутри круга. arg может быть либо массивом [x1, y1, radius], либо копией с круглой формой.

# ct.u.wait(time)

Возвращает промис. Ждёт time миллисекунд, затем разрешается без каких-либо данных. Отклоняет, если была загружена новая комната. Пример:

var enemy = whatever;
enemy.state = 'Disappear';
ct.u.wait(1000)
.then(() => {
    if (!enemy.kill) { // произойдёт через секунду после вызова кода выше.
        enemy.kill = true;
    }
});

# ct.u.load(url: String, callback: Function)

Загружает указанный скрипт и вызывает коллбэк после того, как он будет загружен.

# ct.u.ext(o1, o2[, arr: Array[String]])

Переносит свойства объектов из o2 вo1. Вы можете указать массив имён свойств, которые вы хотите передать; в противном случае передаётся всё.

WARNING

Это не создаёт глубокую копию.