Вы находитесь на странице: 1из 1

Главная 3D 2D Engines Web Stereo Sound

Официальный сайт Справка объекта скрипта


Справка программы Функции объектов
Airfoil void iObjectStart(OBJ_X)

AllObjects Запускает определенный объект. Обратите внимание на то, что целевой объект должен предоставлять некоторое
"запускаемое" действие. Пожалуйста, смотрите файл справки целевого объекта для подробностей о действии, которое
AnimationControls он выполняет при запуске.
Ball
OBJ_X = дескриптор объекта.
Buoy
void iObjectStop(OBJ_X)
Cam1StPerson
Останавливает определенный объект. Обратите внимание на то, что целевой объект должен предоставлять некоторое
CamChase "останавливаемое" действие. Пожалуйста, смотрите файл справки целевого объекта для подробностей о действии,
которое он выполняет.
Car
OBJ_X = дескриптор объекта.
CarAI
void iObjectSwitch(OBJ_X)
Character
Переключает определенный объект (запускает, если остановлен, и наоборот). Обратите внимание на то, что целевой
ConfigureControls объект должен предоставлять некоторое "запускаемое / останавливаемое" действие. Пожалуйста, смотрите файл
справки целевого объекта для подробностей о действии, которое он выполняет.
Counter
OBJ_X = дескриптор объекта.
EventOnContact
void iObjectShow(OBJ_X)
EventOnInput
Отображает определенный объект.
EventOnLocation

EventOnObjectID OBJ_X = дескриптор объекта.

EventOnProximity void iObjectHide(OBJ_X)

EventOnValue Скрывает определенный объект.

EventTimer OBJ_X = дескриптор объекта.

ExitFade void iObjectShowHideSwitch(OBJ_X)

Fog Переключает определенный объект (отображает, если скрыт, и наоборот).

Force OBJ_X = дескриптор объекта.

ForceFreedback void iObjectReset(OBJ_X)

G-Force Полностью повторно инициализирует определенный объект к его состоянию, установленному по умолчанию, как это
определено в проекте.
Group
OBJ_X = дескриптор объекта.
GUIWindow
void iObjectOrientation(OBJ_X,Quaternion)
Compiler
Возвращает текущую ориентацию для определенного объекта.
Highway
OBJ_X = дескриптор объекта.
Imposter
Quaternion = когда функция возвращает, эта переменная содержит ориентацию определенного объекта.
Joint
Примечание: если OBJ_X - это объект, поддерживающий физику и сделанный из нескольких частей (подобный объекту
Particles автомобиля), эта функция возвращает ориентацию части, которая была выделена, когда объект скрипта связывался с
объектом.
Path
void iObjectOrientationSet(OBJ_X,Quaternion)
PathFinder
Устанавливает ориентацию определенного объекта (определенной как квартернион).
PCar
OBJ_X = дескриптор объекта.
PointLight Quaternion = ориентация.
Projectiles Примечание: эта функция может породить нестабильную симуляцию, если Вы используете его для постепенной
RaceTracker настройки ориентации основанного на полигонах твердого тела, или некоторых основанных на твердом теле объектам,
подобных объекту автомобиля для того, чтобы заставить их вращаться.
RigidBody
Она будет работать так, как ожидается, если вместо этого будет использоваться для вращения объектов твердого тела,
Rock основанных на параллелепипеде / сфере.

Scanner void iObjectOrientationReset(OBJ_X,Quaternion)

Script Полностью повторно инициализирует выбранные объект, также устанавливая его ориентацию (определенную как
квартернион).
Script Ref
OBJ_X = дескриптор объекта.
SkinMesh Quaternion = сброс ориентации.
SkyBox Примечание: эта функция не должна использоваться для регулирования ориентации объектов тогда, когда их
физическая симуляция находится в развитии потому, что это может повлиять на точность симуляции для них. Эта
SoundEffect
функция должна использоваться только для инициализации или сброса ориентации объекта.
SoundSource
Примечание: используйте iObjectPositionReset(), если Вы хотите также сбросить расположение.
Spring
void iObjectLocation(OBJ_X,Vector3)
Sprite
Возвращает текущее расположение определенного объекта.
SunLight
OBJ_X = дескриптор объекта.
Switch Vector3 = когда функция возвращает, эта переменная содержит расположение определенного объекта.
Terrain Примечание: если OBJ_X - это объект, поддерживающий физику и сделанный из нескольких частей (подобно объекту
автомобиля), эта функция вернет расположение части, которая была выделена, когда объект скрипта был связан с
TextPrint объектом.
Trail void iObjectLocationSet(OBJ_X,Vector3)
Transform Устанавливает определенный объект в определенное положение.
Tree
OBJ_X = дескриптор объекта.
ValueLabel Vector3 = расположение.

ValueLabelBar Примечание: эта функция может привести к нестабильной симуляции, если Вы используете ее для постепенного
регулирования положения основанного на полигонах твердого тела, или некоторых основанных на твердом теле
ValuePrint объектов, подобных объекту автомобиля, для того, чтобы заставить его перемещаться. Она будет работать так, как
ожидается, если вместо этого используется для перемещения объектов твердого тела, основанных на параллелепипеде /
Velocity сфере.
Waypoint void iObjectLocationReset(OBJ_X,Vector3)

Wheel Полностью повторно инициализирует определенный объект, также устанавливая его положение в определенное
Wind положение.

OBJ_X = дескриптор объекта.


Vector3 = расположение сброса.

Примечание: эта функция не должна использоваться для регулирования расположения объектов тогда, когда их
физическая симуляция находится в развитии потому, что это может повлиять на точность симуляции для них. Эта
функция должна использоваться только для инициализации или сброса расположения объекта.

Примечание: используйте iObjectPositionReset(), если Вы хотите также сбросить ориентацию.

void iObjectPositionReset(OBJ_X,Quaternion,Vector3)

Полностью повторно инициализирует определенный объект, также устанавливая его расположение (ориентацию и
положение).

OBJ_X = дескриптор объекта.


Quaternion = ориентация сброса.
Vector3 = положение сброса.

Примечание: эта функция не должна использоваться для регулирования положения объекта тогда, когда их физическая
симуляция находится в развитии потому, что это может повлиять на точность симуляции для него. Эта функция должна
использоваться только для инициализации или сброса расположения объекта.

void iObjectScaleSet(OBJ_X,Vector3)

Устанавливает масштаб определенного объекта.

OBJ_X = дескриптор объекта.


Vector3 = масштаб.

Примечание: эта функция будет работать только с объектами, которые поддерживают настройки динамического
масштабирования, подобными оболочке каркаса, спрайту и т.д.

void iObjectScale(OBJ_X,Vector3)

Возвращает текущий масштаб определенного объекта оболочки каркаса.

OBJ_X = дескриптор объекта оболочки каркаса.


Vector3 = когда функция возвращает, эта переменная содержит масштаб определенного объекта оболочки каркаса.

Примечание: эта функция поддерживает только объекты оболочки каркаса.

float iObjectKmh(OBJ_X)

Возвращает скорость определенного объекта, в километрах в час (KPH).

OBJ_X = дескриптор объекта. Должен быть объектом, поддерживающим физику, подобным твердому телу,
автомобилю, шару.

Примечание: Вы можете рассчитать мили в час с MPH = KPH*0.6215. Для того, чтобы найти метры в секунду, используйте
M/SEC = KPH*0.277778

iObjectVelocity(OBJ_X,Vector3)

Возвращает скорость определенного объекта, в метрах в секунду.

OBJ_X = дескриптор объекта. Должен быть объектом, поддерживающим физику, подобным твердому телу,
автомобилю, шару.
Vector3 = вектор скорости. Возвращает данные.

iObjectVelocitySet(OBJ_X,Vector3)

Устанавливает скорость определенного объекта, в метрах в секунду.

OBJ_X = дескриптор объекта. Должен быть объектом, поддерживающим физику, подобным твердому телу,
автомобилю, шару.
Vector3 = вектор скорости.

Примечание: эта функция не должна использоваться для регулирования скорости объектов тогда, когда их физическая
симуляция находится в развитии потому, что это может повлиять на точность симуляции для них. Эта функция должна
использоваться только для инициализации или сброса скорости объекта.

iObjectSpin(OBJ_X,Vector3)

Возвращает вращение определенного объекта.

OBJ_X = дескриптор объекта. Должен быть объектом, поддерживающим физику, подобным твердому телу,
автомобилю, шару.
Vector3 = вектор вращения.

Вектор направления - это ось вращения (абсолютная). Длина вектора - это скорость вращения (вращение), в градусах в
секунду.

iObjectSpinSet(OBJ_X,Vector3)

Устанавливает вращение определенного объекта, в градусах в секунду.

OBJ_X = дескриптор объекта. Должен быть объектом, поддерживающим физику, подобным твердому телу,
автомобилю, шару.
Vector3 = вектор вращения. Направление вектора - это ось вращения. Длина вектора - это угловая скорость.

Примечание: эта функция не должна использоваться для регулирования вращения объектов тогда, когда их физическая
симуляция находится в развитии потому, что это может повлиять на точность симуляции для него. Эта функция должна
использоваться только для инициализации или сброса вращения объекта.

iObjectTorqueApply(OBJ_X,Vector3)

Применяет угловую силу (вращающий момент) к определенному объекту.

OBJ_X = дескриптор объекта.


Vector3 = вращающий момент.

Направление вектора - это ось вращения (абсолютная). Длина вектора - это интенсивность угловой силы (вращающего
момента).

Примечание: так как результирующая угловая скорость зависит от общей массы объекта, использование
iObjectAngularAccelerationApply() может быть легче.

iObjectAngularAccelerationApply(OBJ_X,Vector3)

OBJ_X = дескриптор объекта.


Vector3 = угловое ускорение, в градусах в секунду^2. Направление вектора - это ось вращения (абсолютная). Длина
вектора - это интенсивность углового ускорения.

iObjectForceApply(OBJ_X,Vector3,Vector3)

OBJ_X = дескриптор объекта.


Vector3 = сила.
Vector3 = точка для применения силы.

Координаты точки являются относительными по отношению к центру масс объекта. Если NULL, предполагается центр
масс.

Примечание: результирующее ускорение зависит от общей массы объекта. Например, если Вы применяете вектор силы
метровой длины к неподвижному объекту с массой, равной 5, на одну секунду, объект пройдет 1/5 метра (0.2 фута). Если
Вы примените ту же самую силу к объекту с массой, равной 1, он пройдет вместо этого 1.0 фут метр (?). Использование
iObjectAccelerationApply(), вероятно, легче, если точка приложения - это центр масс объекта.

iObjectAccelerationApply(OBJ_X,Vector3)

OBJ_X = дескриптор объекта.


Vector3 = ускорение, в метрах в секунду^2. Длина вектора - это интенсивность ускорения.

iObjectDampingApply(OBJ_X,float,float,float,bool,bool)

Индивидуально применяет факторы демпфирования к каждой оси определенного объекта, основанного на твердом теле
(твердое тело, автомобиль, автомобиль и т.д.).

OBJ_X = дескриптор объекта.


float,float,float = факторы демпфирования для осей X, Y и Z. Рекомендуемые значения демпфирования находятся
между 0.0 (нет демпфирования) и 1.0 (максимальное демпфирование).
bool = установите этот параметр в "истину" для применения фактора демпфирования к вращению объекта.
Установите его в ложь для применения факторов демпфирования к перемещению объекта.
bool = установите этот параметр в "истину" для использования локальных осей объекта в качестве ссылки.
Установите его в ложь для использования осей мирового пространства в качестве ссылки.

Примечание: эта функция должна вызываться на каждом цикле скрипта в порядке должной работы.

float iObjectPicked(OBJ_X,Vector3)

Если определенный объект щелкнут с использованием любой кнопки мыши, эта функция вернет расстояние размещения
указания от текущей камеры (видового окна). Функция всегда возвращает ноль, если объект является спрайтом. Она
вернет отрицательное значение, если определенный объект не был указан.

OBJ_X = дескриптор объекта.


Vector3 = когда функция возвращает, если объект был указан, то это значение содержит относительные к миру
координаты расположения указания.

Примечание: при указании объекта спрайта, пожалуйста, помните, что все исходное изображение спрайта используется
как ссылка. Поэтому любые прозрачные пиксели в изображении могут быть указаны.

Примечание: при указании анимированного трехмерного объекта, пожалуйста, помните, что, так как эта функция
использует исходную, неморфированную геометрию в качестве ссылки, указание может быть неточным.

int iObjectScan(OBJ_X,Vector3,Vector3,float,Vector3,Vector3)

Возвращает истину, если определенный объект был задет сканом.

OBJ_X = дескриптор объекта.


Vector3 = начало координат сканера.
Vector3 = направление сканера. Длина этого вектора будет длиной сканирующей капсулы.
float = радиус сканера (радиус капсулы).
Vector3 = точка контакта (абсолютные координаты). Возвращает данные.
Vector3 = нормаль контакта (абсолютная ориентация, наружу от поверхности тела). Возвращает данные.

Примечание: сканер выполняет проверку определенной капсулы против определенного объекта, для пересечений.
Рассматриваются только пересечения близко к началу координат, в случае, когда капсула пересекается с объектом в
двух и более точках.

Примечание: эта функция будет работать только с объектами, поддерживающими определение столкновений.

Важно: пересечения внутри "радиуса сканера" из "начала координат сканера" не определяются! Убедитесь, что Ваш
сканер начинается с метрового "радиуса" перед областью возможных пересечений.

iObjectTextSet(OBJ_X,string)

Устанавливает определенный текст для определенного объекта (например, объекта вывода текста).

OBJ_X = дескриптор объекта.


string = текст.

iObjectParamSet(OBJ_X,int,float)

Устанавливает специальные внутренние параметры для определенного объекта. В настоящее время эта функция
поддерживает только объект PCar.

OBJ_X = дескриптор объекта.


int = идентификатор параметра. Для полного списка и примера использования, пожалуйста, смотрите
демонстрационный проект, называемый PCarScriptedDemo.
float = значение параметра.

void iObjectRefresh(OBJ_X,string)

Изменяет ресурсы (трехмерные модели, текстуры и т.д.) ассоциированные с определенным объектом. Эта функция
обычно используется для обновления геометрии / визуального компонента объектов оболочки каркаса, твердого тела,
параллелепипеда неба или спрайта во время исполнения программы, например, после того, как новая художественная
работа была загружена с сервера (веб-сайта) с использованием функции iFileDownload(). Для примера использования,
смотрите демонстрационный проект, называемый WebDownloadDemo.3dr.

OBJ_X = дескриптор объекта.


string = путь к папке, содержащей файл или файлы нового ресурса. Если определен локальный путь (например,
".\\") это является относительным по отношению к текущей папке3D Rad или Вашей папке скомпилированного
проекта.

Важно: целевой объект (OBJ_X параметр) будет пытаться загрузить должный файл или файлы из определенной папки.
Убедитесь в том, что целевая папка содержит файлы для загрузки с должными именами (например, объект оболочки
каркаса будет пытаться загрузить файлы, называемые 000_mesh.x, 000_shadow.x и т.д.).

Примечание: если целевая папка является объектом звукового эффекта или источника звука, путь к файлу должен
включать имя файла для использования для замены текущего звука.

Примечание:: если объект является оболочкой каркаса, основанной на покадровой анимации, новый набор должен
предоставлять то же самое число кадров.

Примечание: эта функция не работает для объектов твердого тела, которые используют окружающую сферу для
определения столкновений.

int iObjectBonesCount(OBJ_X)

Возвращает число костей в определенном объекте (обычно оболочка каркаса).

OBJ_X = дескриптор объекта.

Примечание: в зависимости от программы, использованной для генерации оболочечной модели .x, возвращаемое
значение может включать или не включать нулевые кости, поэтому возвращаемое число костей имеет тенденцию быть
больше, чем число фактических костей, редактируемых в приложении трехмерного моделирования.

void iObjectBoneOrientation(OBJ_X,int,Quaternion,int)

Возвращает ориентацию кости определенного объекта.

OBJ_X = дескриптор объекта.


int = индекс кости. Это значение должно быть между 0 (первая кость) и iObjectBonesCount()-1. Каждая кость в
модели индексируется программой, использованной для генерации оболочечной модели .x. Нет простого способа
предсказать, какой индекс будет назначен отдельной кости.
Quaternion = ориентация. Возвращает данные.
int = тип ориентации.
0 = относительно мира.
1 = относительно объекта.
2 = относительно родительской кости.

iObjectBoneLocation(OBJ_X,int,Vector3,int)

Возвращает расположение кости определенного объекта.

OBJ_X = дескриптор объекта.


int = индекс кости. Это значение должно быть между 0 (первая кость) и iObjectBonesCount()-1. Каждая кость в
модели индексируется программой, использованной для генерации оболочечной модели .x. Нет простого способа
предсказать, какой индекс будет назначен отдельной кости.
Vector3 = расположение. Возвращает данные.
int = тип расположения.
0 = относительно мира.
1 = относительно объекта.
2 = относительно родительской кости.

void iObjectBoneOrientationSet(OBJ_X,int,Quaternion,int)

Устанавливает ориентацию кости определенного объекта.

OBJ_X = дескриптор объекта.


int = индекс кости. Это значение должно быть между 0 (первая кость) и iObjectBonesCount()-1. Каждая кость в
модели индексируется программой, использованной для генерации оболочечной модели .x. Нет простого способа
предсказать, какой индекс будет назначен отдельной кости.
Quaternion = ориентация. Возвращает данные.
int = тип ориентации.
0 = относительно мира.
1 = относительно объекта.
2 = относительно родительской кости.

Примечание: эта функция должна вызываться на каждом цикле скрипта в порядке работы так. как ожидается.

Примечание: для примера использования, пожалуйста, смотрите, проект примера SkinMeshBoneControlDemo.3dr.

iObjectBoneLocationSet(OBJ_X,int,Vector3)

Устанавливает расположение кости определенного объекта (в координатах относительно родительской кости).

OBJ_X = дескриптор объекта.


int = индекс кости. Это значение должно быть между 0 (первая кость) и iObjectBonesCount()-1. Каждая кость в
модели индексируется программой, использованной для генерации оболочечной модели .x. Нет простого способа
предсказать, какой индекс будет назначен отдельной кости.
Vector3 = расположение (относительно родительской кости).

Примечание: эта функция должна вызываться на каждом цикле скрипта в порядке работы так, как ожидается.

iObjectBoneScaleSet(OBJ_X,int,Vector3)

Устанавливает масштаб кости определенного объекта.

OBJ_X = дескриптор объекта.


int = индекс кости. Это значение должно быть между 0 (первая кость) и iObjectBonesCount()-1. Каждая кость в
модели индексируется программой, использованной для генерации оболочечной модели .x. Нет простого способа
предсказать, какой индекс будет назначен отдельной кости.
Vector3 = масштаб.

Примечание: эта функция должна вызываться на каждом цикле скрипта в порядке работы так, как ожидается.

iObjectEnvMapFocusSet(OBJ_X,Vector3)

Устанавливает расположение фокуса для карты окружения, ассоциированной с определенным объектом оболочки
каркаса.

OBJ_X = дескриптор объекта оболочки каркаса.


Vector3 = расположение фокуса, абсолютные координаты.

iObjectImpostersCreate(OBJ_X,int)

Создает определенное число импостеров для объекта (должен быть оболочкой каркаса). Импостеры являются клонами
главного объекта оболочки каркаса, которые могут быть помещены с использованием функции iObjectImposterSet(). Они
визуализируются быстрее, чем множественные идентичные объекты оболочки каркаса потому, что видеокарта не
нуждается в перезагрузке данных трехмерной модели для каждого визуализируемого элемента.

OBJ_X = дескриптор объекта оболочки каркаса.


int = число импостеров для создания.

Примечание: эта функция в настоящее время будет работать только с объектами оболочки каркаса, которые не имеют
анимации, основанной на костях.

iObjectImpostersDestroy(OBJ_X)

Удаляет все импостеры для определенного объекта оболочки каркаса.

OBJ_X = дескриптор объекта оболочки каркаса.

iObjectImposterSet(OBJ_X,int,Quaternion,Vector3)

Устанавливает ориентацию и положение для импостера определенного объекта оболочки каркаса.

OBJ_X = дескриптор объекта оболочки каркаса.


int = индекс импостера.
Quaternion = ориентация.
Vector3 = положение.

iObjectImposterGet(OBJ_X,int,Quaternion,Vector3)

Получает ориентацию и положение для импостера определенного объекта оболочки каркаса. Эта функция может быть
использована, например, для копирования положения импостера твердого тела в положение импостера объекта
оболочки каркаса.

OBJ_X = дескриптор объекта оболочки каркаса.


int = индекс импостера.
Quaternion = когда функция возвращает, эта переменная содержит ориентацию определенного импостера.
Vector3 = когда функция возвращает, эта переменная содержит положение определенного импостера.

iObjectImposterScaleSet(OBJ_X,int,Vector3)

Устанавливает масштабирование для импостера определенного объекта оболочки каркаса.

OBJ_X = дескриптор объекта оболочки каркаса.


int = индекс импостера.
Vector3 = масштабирование. Компоненты X, Y, Z этого вектора являются локальными факторами масштабирования.
Исходный размер - это когда масштабирующий фактор равен 1,0.

iObjectImposterHide(OBJ_X,int)

Скрывает импостер определенного объекта оболочки каркаса.

OBJ_X = дескриптор объекта оболочки каркаса.


int = индекс импостера.

Примечание: если импостер имеет тень, вызов этой функции отключит ее. После повторного отображения импостера с
iObjctImposterShow(), Вам также нужно вызвать iObjectImposterShadowEnable() для повторной инициализации тени.

iObjectImposterShow(OBJ_X,int)

Отображает импостер определенного объекта оболочки каркаса.

OBJ_X = дескриптор объекта оболочки каркаса.


int = индекс импостера.

iObjectImposterShadowEnable(OBJ_X,int,bool)

Включает / отключает отбрасывание тени для импостера определенного объекта оболочки каркаса.

OBJ_X = дескриптор объекта оболочки каркаса.


int = индекс импостера.
bool = установите этот параметр в "истину"для включения теней, в "ложь" для отключения.

Примечание: вызовы этой функции игнорируются, если оболочка каркаса не имеет самого по себе отбрасывателя тени.

Примечание: тени импостера быстрее, чем тени обычной оболочки каркаса, но они остаются затратной с точки зрения
расчетов возможностью, медленным для видеокарт с бедным запасом. В некоторых случаях, включение теней
обесценивает цель использования импостеров.

iObjectImposterTorqueApply(OBJ_X,int,Vector3)

Применяет угловую силу (вращающий момент) к определенному объекту.

OBJ_X = дескриптор объекта.


int = индекс импостера.
Vector3 = вращающий момент. Направление вектора - это ось вращения (абсолютная). Длина вектора - это
интенсивность угловой силы (вращающего момента).

Примечание: результирующая угловая скорость зависит от обще массы объекта. Это значит, что в некоторых случаях
более предпочтительным будет использование iObjectImposterAngularAccelerationApply().

iObjectImposterAngularAccelerationApply(OBJ_X,int,Vector3)

OBJ_X = дескриптор объекта.


int = индекс импостера.
Vector3 = угловое ускорение, в градусах в секунду^2. Направление вектора - это ось вращения (абсолютная). Длина
вектора - это интенсивность углового ускорения.

iObjectImposterForceApply(OBJ_X,int,Vector3,Vector3)

OBJ_X = дескриптор объекта.


int = индекс импостера.
Vector3 = сила.
Vector3 = точка приложения силы. Координаты точки являются относительными по отношению к центру масс
объекта. Если NULL, то предполагается центр масс.

Примечание: результирующее ускорение зависит от общей массы объекта. Например, если ВЫ применяете метровый
вектор силы к неподвижному объекту с массой, равной 5, на одну секунду, объект пройдет 1/5 метра (0.2 фута). Если Вы
применяете ту же самую силу к объекту с массой, равной 1, он вместо этого пройдет 1.0 фута метра (?). Это значит, что
использование iObjectImposterAccelerationApply() может быть легче, если точка приложения - это центр масс объекта.

iObjectImposterAccelerationApply(OBJ_X,int,Vector3)

OBJ_X = дескриптор объекта.


int = индекс импостера.
Vector3 = ускорение, в метрах в секунду^2. Длина вектора - это интенсивность ускорения.

iObjectImposterVelocitySet(OBJ_X,int,Vector3)

Устанавливает скорость импостера определенного объекта, в метрах в секунду.

OBJ_X = дескриптор объекта. Должен быть объектом твердого тела.


int = индекс импостера.
Vector3 = вектор скорости.

Примечание: эта функция не должна использоваться для регулирования скорости импостеров тогда, когда их физическая
симуляция находится в развитии потому, что это может повлиять на точность симуляции для них. Эта функция должна
использоваться только для инициализации или сброса скорости импостера.

Примечание: вызов этой функции для одного импостера может повлиять на симуляцию других импостеров в том же
самом пакете и привести к легкому замедлению производительности, в течение цикла игры, в котором вызывается
функция.

iObjectChildTransform(OBJ_X,OBJ_Y,Vector3,Vector3)

Устанавливает угловые / линейные смещения для определенного объекта (ребенка) с использованием локального
пространства другого объекта (родителя) в качестве ссылки.

OBJ_X = дескриптор родительского объекта.


OBJ_Y = дескриптор детского объекта.
Vector3 = угловое смещение (компоненты вектора - это Эйлеровы углы, x, y, z).
Vector3 = линейное смещение.

Функции пользовательского шейдера


iShaderSet(OBJ_X,string)

Назначает определенный шейдер (или шейдер постпроцессинга) определенному объекту оболочки каркаса (или
следящей камеры). После вызова этой функции, оболочка каркаса (или камера) будут визуализироваться с
использованием определенного шейдера до тех пор, пока функция не будет вызвана еще раз с другим именем шейдера
в качестве параметра.

OBJ_X = дескриптор объекта оболочки каркаса или следящей камеры.


string = имя шейдера. Шейдеры определяются как раздел кода HLSL, ограниченный тэгами "/*HLSLSTART name" и
"HLSLEND*/", обычно в начале кода Вашего скрипта. Имя шейдера - это строка, следующая за ключевым словом
"/*HLSLSTART". Пожалуйста, смотрите http://www.3drad.com/custom-shaders.htm для большего о написании Ваших
собственных шейдеров для 3D Rad.

Важно: опция "Использовать пользовательские шейдеры" в диалоговом окне свойств оболочки каркаса должна быть
установлена прежде, чем пользовательский шейдер может быть применен к оболочке каркаса путем вызова iShaderSet().
Или, если объект является объектом следящей камеры, опция "Пользователь" должна быть выбрана в раскрывающемся
списке "Фильтр".

Примечание: функция iShaderSet() использует очень маленькую мощность обработки, и может быть использована для
переключения шейдеров так часто, как это нужно (например, для создания специальных визуальных эффектов времени
выполнения программы).

iShaderStack(OBJ_X,string,float)

Добавляет определенный шейдер постпроцессинга к определенному объекту следящей камеры. Все шейдеры будут
обрабатываться в том же порядке, в котором они были добавлены (уложенные в стек).

OBJ_X = дескриптор объекта следящей камеры. string = имя шейдера. Если это пустая строка (""), то список
добавленных к камере шейдеров сбрасывается (очищается). Смотрите iShaderSet() для большего количества
информации об этом параметре.
float = масштабирующий фактор. Если отличается от 1.0f, то текстура цели визуализации подвергается изменению
размера после того, как пиксельный шейдер был обработан, прежде. чем он будет скопирован на экран (или на
следующую цель визуализации, которая затем используется как источник для следующего пиксельного шейдера).
Если значение отрицательно (и между -1.0f и 0.0f), то пиксельный шейдер будет оперировать только на меньшей
части исходной текстуры и цели визуализации.

iShaderFloatSet(OBJ_X,string,float)

Устанавливает переменную с плавающей точкой для шейдера HLSL, ассоциированного с определенным объектом
оболочки каркаса или следящей камеры. Обратите внимание на то, что эта функция должна вызываться на каждом
цикле скрипта для должной работы. Отказ от этого также может привести к визуальным артефактам.

OBJ_X = дескриптор объекта оболочки каркаса / следящей камеры.


string = имя переменной шейдера, как оно объявлено в заголовке кода HLSL. Если это пустая строка (""), то данные
не отправляются немедленно в шейдер. Вместо этого они добавляются к буферу. Затем буфер отправляется в
шейдер только тогда, когда предоставляется не нулевая строка, в следующем вызове любой другой функции
iShaderFloat..Set(). Это позволяет Вам "строить" значений с плавающей точкой и отправлять из за один раз,
например, для объявленного в шейдере HLSL массива (переменных) с плавающей точкой произвольной длины.
Для примера использования, пожалуйста, смотрите проект примера, называемый PostProcessStacked.3dr.
float = значение для установки.

iShaderFloat2Set(OBJ_X,string,float,float)

То же самое, что и iShaderValueSet(), но позволяет Вам установить два значения одновременно. Это обычно
используется для установки переменной вектора "float2" в Вашем коде HLSL.

iShaderFloat3Set(OBJ_X,string,float,float,float)

То же самое, что и iShaderValueSet() но позволяет Вам установить 3 значения одновременно. Это обычно используется
для установки переменной вектора "float3" в Вашем коде HLSL.

iShaderFloat4Set(OBJ_X,string,float,float,float,float)

То же самое, что и iShaderValueSet(), но позволяет Вам установить 4 значения одновременно. Это обычно используется
для установки переменной вектора "float4" в Вашем коде HLSL.

iShaderFloat4x3Set(OBJ_X,string,float,float,float,float,float,float,float,float,float,float,float,float)

То же самое, что и iShaderValueSet(), но позволяет Вам установить 12 значений одновременно. Это обычно используется
для установки переменной матрицы "float4x3" в Вашем коде HLSL.

iShaderFloat4x4Set(OBJ_X,string,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float)

То же самое, что и iShaderValueSet(), но позволяет Вам установить 16 значений одновременно. Это обычно используется
для установки переменной матрицы "float4x4" в Вашем коде HLSL.

iShaderViewMatrixSet(OBJ_X,string,OBJ_Y)

Извлекает матрицу вида из определенного объекта следящей камеры, и прямо отправляет ее в пользовательский
шейдер определенного объекта оболочки каркаса. В пользовательском шейдере матица должна быть объявлена как
переменная "float4x4".

OBJ_X = дескриптор объекта оболочки каркаса.


string = имя переменной шедера, как оно объявлено в заголовке кода HLSL.
OBJ_Y = объект камеры (окно визуализации) для использования в качестве ссылки.

iShaderProjectionMatrixSet(OBJ_X,string,OBJ_Y)

Извлекает матрицу проекции из определенного объекта следящей камеры, и прямо отправляет ее в пользовательский
шейдер определенного объекта оболочки каркаса. В пользовательском шейдере матрица должна быть объявлена как
переменная"float4x4".

OBJ_X = дескриптор объекта оболочки каркаса.


string = имя переменной шейдера, как она объявлена в заголовке кода HLSL.
OBJ_Y = объект камеры (окно визуализации) для использования в качестве ссылки.

int iShaderTextureCreate(string)

Загружает определенный файл изображения и возвращает дескриптор на объект текстуры. Смотрите также
iShaderTextureSet().

string = имя файла исходного изображения (bmp, dds, dib, jpg, png, tga).

Примечание: создание одно и той же текстуры еще и еще раз (из одного и того же исходного файла) не будет тратить
память, даже если вызовы этой функции происходят в разных объектах скрипта. 3D Rad будет, если это возможно,
повторно использовать данные, уже находящиеся в памяти.

iShaderTextureDestroy(int)

int = дескриптор объекта текстуры. Смотрите iShaderTextureCreate().

Разрушение объектов текстур, когда Ваш проект больше не использует их, не является необходимым потому, что 3D Rad
будет делать это автоматически при выходе. Однако, разработка Ваших скриптов так, чтобы они всегда удаляли
текстуры, которые больше не нужны - это хорошая практика потому, что это освобождает память, которая может
использоваться другими ресурсами в Вашем проекте.

iShaderTextureSet(OBJ_X,string,int)

Устанавливает текстуру для использования шейдером HLSL, ассоциированным с определенным объектом оболочки
каркаса или следящей камеры.

OBJ_X = дескриптор объекта оболочки каркаса / следящей камеры.


string = имя текстуры, как объявлено в заголовке кода HLSL.
int = дескриптор объекта текстуры. Смотрите iShaderTextureCreate().

Строковые функции
int iStringLen(string)

Возвращает длину определенной строки, в символах.

iStringUCase(string,string)

Преобразует строку в ее версию с верхним регистром.

string = результирующая строка.


string = исходная строка.

Примечание: два параметра могут быть одной и той же строкой.

iStringLCase(string,string)

Преобразует строку в ее версию с нижним регистром.

string = результирующая строка.


string = исходная строка.

Примечание: два параметра могут быть одной и той же строкой.

iStringLeft(string,string,int)

Копирует первые X символов из строки в другую строку.

string = результирующая строка.


string = исходная строка.
int = число символов для копирования.

Примечание: первые два параметра могут быть одной и той же строкой.

iStringRight(string,string,int)

Копирует последние X символов из строки в другую строку.

string = результирующая строка.


string = исходная строка.
int = число символов для копирования.

Примечание: первые два параметра могут быть одной и той же строкой.

iStringMid(string,string,int,int)

Копирует X символов из строки в другую строку, начиная с определенного положения.

string = результирующая строка.


string = исходная строка.
int = положение для начала копирования символов.
int = число символов для копирования.

Примечание: первые два параметра могут быть одной и той же строкой.

iStringStr(string,float,string)

Строит строку путем преобразования определенного значения в символы.

string = результирующая строка.


float = значение для преобразования.
string = строка, описывающая формат результирующей строки.

Примеры:

"%.0f" - любое число разрядов для целой части, ноль разрядов для дробной части (например, 1321).
"%3.0f" - по меньшей мере, 3 разряда для целой части, ноль разрядов для дробной части (например, 321).
"%2.3f" - по меньшей мере, 2 разряда для целой части, 2 разряда для дробной части (например, 32.731).
"%05.1f" - по меньшей мере, 5 разрядов для целой части, 1 разряд для дробной части. Если целая часть имеет
менее 5 разрядов, отсутствующие места заполняются нулями (например, 00321.3).
"%f" - любое число разрядов для целой части и до шести разрядов для дробной части (например, 1501.540).
"%g" - любое число разрядов для целой части и для дробной части (например, 1501.54).
"%.0f%%" - любое число разрядов для целой части, ноль разрядов для дробной части. Также добавляет в конец
символ процент а (%) к значению (например, 77%).

float iStringVal(string)

Возвращает значение, соответствующее значению в определенной строке.

iStringFind(string,string,int,bool)

Возвращает положение подстроки внутри другой строки. Возвращает -1, если подстрока не найдена.

string = исходная строка.


string = подстрока для поиска.
int = положение для начала поиска.
bool = установите этот параметр в "истину" для того, чтобы сделать поиск чувствительным к регистру.

Примечание: тогда как эта функция может использоваться для сравнения строк, помните, что строки поддерживают
также нормальные скриптовые выражения. Например, "if (myString == "foobar")..." - это допустимое использование. Также
поддерживаются операторы <, >, != и +.

iStringReplace(string,string,string,string,bool)

Копирует строку в другую строку, также заменяя все вхождения определенной подстроки определенным текстом.

string = результирующая строка.


string = исходная строка.
string = подстрока для замены.
string = текст, используемый как замещение для любого найденного вхождения подстроки.
bool = установите этот параметр в "истину" для того, чтобы сделать поиск чувствительным к регистру.

Примечание: первые два параметра могут быть одной и той же строкой.

iPrint(string,float,float,OBJ_X)

Выводит определенную строку с использованием настроек шрифта и символов так, как они сконфигурированы в
определенном объекте вывода текста.

string = текст (максимум 255 символов). Поддерживается многострочный текст (используйте '\r' для определения
новой строки символов).
float,float = экранное положение. Обратите внимание на то, что результирующее положение текста зависит от
настроек исходного объекта вывода текста.
OBJ_X = дескриптор объекта вывода текста.

Примечание: эта функция выводит текст только один раз. В порядке отображения постоянного текста она должна
выполняться на каждом цикле скрипта.

iGlobalStringSet(string,int)

Устанавливает определенный элемент глобального массива строк. Глобальны массив строк может содержать до 1024
строк, и доступен любому скрипту в проекте, или всем скриптам во всех проектах, которые были скомпилированы вместе
(например, многоуровневая игра).

string = строка для копирования в определенный элемент массива (максимум 1024 символа).
int = индекс элемента массива (0-1023).

iGlobalStringGet(string,int)

Получает определенный элемент глобального массива строк. Смотрите iGlobalStringSet() для большего количества
подробностей.

string = строка для помещения получаемой текстовой информации.


int = индекс элемента массива (0-1023).

Математические функции
float iFloatRand(float,float)

Возвращает случайное значение с плавающей точкой между двумя определенными значениями.

float iFloatAbs(float)

Возвращает абсолютное значение определенного значения с плавающей точкой.

float iFloatSin(float)

Возвращает синус определенного угла.

float = угол в градусах.

float iFloatCos(float)

Возвращает косинус определенного угла.

float = угол в градусах.

float iFloatSqrt(float)

Возвращает квадратный корень определенного значения с плавающей точкой.

float iFloatInterpolate(float,float,float,float,float,bool)

Получая входящее значение (фактор интерполяции), возвращает его интерполированную версию между dstmin и dstmax,
после сравнения его с srcmin и srcmax. То есть: результат = dstmin + (dstmax-dstmin)*((ввод-srcmin)/(srcmax-srcmin))

float = фактор интерполяции.


float = исходный минимум (srcmin).
float = исходный максимум (srcmax).
float = целевой минимум (dstmin).
float = целевой максимум (dstmax).
bool = установите это в "истину" для фиксирования возвращаемого значения внутри целевого минимума и целевого
максимума.

float iFloatTendTo(float,float,float,float,int)

float = переменная с плавающей точкой для регулировки так, чтобы она стремилась к некоторому значению.

Примечание: эта переменная обычно та же самая, что и используемая в качестве назначения для возвращаемого
значения. Например, VAR = iFloatTendTo(VAR,ref,target,speed,mode).

float = ссылочное значение. Обычно это ноль.


float = целевое значение (значение, к которому нужно стремиться). Обратите внимание на то, что значение реально
никогда не достигается.
float = скорость, определяющая время, необходимое для достижения определенного целевого значения.
int = режим.
Используйте 0 для уменьшения скорости вариации при приближении к целевому значению.
Используйте 1 для уменьшения скорости вариации при приближении к ссылочному значению.
Используйте 2 для уменьшения скорости вариации при приближении к ссылочному и целевому значениям.
Используйте 3 для уменьшения скорости вариации при приближении к средней точке между ссылочным и
целевым значениями.

Примечание: эта функция должна выполняться на каждом цикле скрипта в порядке должной работы.

Примечание: смотрите проект, называемый 'TutScript6_iFloatTendTo.3dr' для примера использования.

float iFloatTrend(float,float,float,float,float,int)

float = переменная с плавающей точкой для регулировки так, чтобы она стремилась к некоторому значению.

Примечание: эта переменная обычно та же самая, что и используемая в качестве назначения для возвращаемого
значения. Например, VAR = iFloatTrend(VAR,refMin,refMax,target,speed,mode)

float = минимальное ссылочное значение.


float = максимальное ссылочное значение.
float = целевое значение (значение, к которому нужно стремиться). Должно быть между минимальным и
максимальным ссылочным значениями.
float = скорость, определяющая время, необходимое для достижения определенного целевого значения.
int = режим.
Используйте 0 для уменьшения скорости вариации при приближении к целевому значению.
Используйте 1 для уменьшения скорости вариации при приближении к ссылочному значению.
Используйте 2 для уменьшения скорости вариации при приближении к ссылочному и целевому значениям.
Используйте 3 для уменьшения скорости вариации при приближении к средней точке между ссылочным и
целевым значениями.

Примечание: эта функция должна выполняться на каждом цикле скрипта в порядке должной работы.

Примечание: эта функция подобна iFloatTendTo(), но производимый ею гармонический эффект обычно более точный, так
как он основывается на двух ссылочных значениях вместо одного.

float iVectorLength(Vector3)

Возвращает длину определенного вектора.

Vector3 = исходный вектор.

float iVectorLengthSq(Vector3)

Возвращает возведенную в квадрат длину определенного вектора.

Vector3 = исходный вектор.

iVectorLengthSet(Vector3,Vector3,float)

Приводит длину вектора к определенному значению, без изменения его направления.

Vector3 = трансформированный вектор. Возвращает данные.


Vector3 = исходный вектор.
float = необходимая длина. Установите это значение в 1.0f для "нормализации" вектора.

float iVectorDot(Vector3,Vector3)

Возвращает точку, производимую определенными трехмерными векторами.

Vector3 = первый исходный вектор.


Vector3 = второй исходный вектор.

iVectorCross(Vector3,Vector3,Vector3)

Возврашает пересечение, производимое определенными трехмерными векторами.

Vector3 = результирующий вектор. Возвращает данные.


Vector3 = первый исходный вектор.
Vector3 = второй исходный вектор.

iVectorRotate(Vector3,Vector3,Quaternion)

Vector3 = трансформированные координаты (вектор). Возвращает данные.


Vector3 = координаты (вектор) для вращения.
Quaternion = квартернион, представляющий вращение для применения.

iVectorEulerRotate(Vector3,Vector3,float,float,float,string)

Vector3 = трансформированные координаты (вектор). Возвращает данные.


Vector3 = координаты (вектор) для вращения.
float = первое вращение. Смотрите строку символов ниже.
float = второе вращение.
float = третье вращение.
string = трехсимвольная строка, определяющая оси и порядок, в котором применяются вращения.

Например, "xyz" (применяет первое вращение по оси X, затем второе вращение по оси Y, и затем третье вращение по
осиt Z), "xzx" и "xzy" являются допустимыми строками.

iVectorCompare(Vector3,Vector3,float)

Vector3 = первый вектор.


Vector3 = второй вектор.
float = порог.

Установите это значение в ноль для строгого сравнения (функция возвратит истину, если векторы идентичны), или
определите положительное значение для проверки того, находится ли разница между каждым компонентом вектора
(X,Y,Z) внутри некоторого порога.

iQuaternionFromAxisAngle(Quaternion,Vector3,float)

Quaternion = результирующий квартернион. Возвращает данные.


Vector3 = ось ориентации.
float = угол ориентации.

Примечание: входящая ориентация выражается осью (вектор) и углом вращения относительно этой оси (значение с
плавающей точкой).

iQuaternionFromEulerAngles(Quaternion,float,float,float,string)

Quaternion = Результирующий квартернион. Возвращает данные.


float = первое вращение. Смотрите строку символов ниже.
float = второе вращение.
float = третье вращение.
string = трехсимвольная строка, определяющая оси и порядок, в котором применяются вращения. Например, "xyz"
(применяет первое вращение по оси X, затем второе вращение по оси Y, и затем третье вращение по осиt Z), "xzx" и
"xzy" являются допустимыми строками.

iQuaternionToEulerAngles(Quaternion,float,float,float)

Quaternion = исходный квартернион.


float = угол ориентации относительно мировой оси X. Возвращает данные.
float = угол ориентации относительно мировой оси Y. Возвращает данные.
float = угол ориентации относительно мировой оси Z. Возвращает данные.

Примечание: три угла рассчитываются так, чтобы они определяли только исходную ориентацию, если применены в
порядке "xyz".

iQuaternionLookAt(Quaternion,Vector3,Vector3)

Quaternion = результирующий квартернион. Возвращает данные. Вращение требует ориентировать вектор Z+


D3DXVECTOR3(0.0f,0.0f,1.0f) в определенном направлении.
Vector3 = направление.
Vector3 = направление вверх. Например, Vector3(0,1,0).

Примечание: эта функция не будет работать должным образом, если векторы "направления" и "вверх" являются
параллельными.

iQuaternionMultiply(Quaternion,Quaternion,Quaternion)

Возвращает результирующую ориентацию из соединенных двух данных квартернионовых ориентация (вращений).

Quaternion = Результирующая ориентация. Возвращает данные.


Quaternion = исходная ориентация q1.
Quaternion = исходная ориентация q2.

Вообразите неориентированный объект. То есть, объект со своей локальной осью Z+, параллельной мировой оси Z+.
Вообразите применение к нему ориентации q2 (вращение его на q2) и затем применение к нему ориентации q1.
Результирующая ориентация возвращается в квартернионе, определенном в первом параметре.

iQuaternionInterpolate(Quaternion,Quaternion,Quaternion,float)

Расчитывает промежуточную ориентацию из двух данных ориентаций, по данному фактору.

Quaternion = результирующая ориентация. Возвращает данные.


Quaternion = исходная ориентация q1.
Quaternion = исходная ориентация q2.
float = если равно 0, возвращает q1. Если равно 1, возвращает q2. Промежуточные значения (например, 0.13 и т.д.)
возвращают промежуточные ориентации.

iQuaternionCompare(Quaternion,Quaternion)

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

Quaternion = первый квартернион.


Quaternion = второй квартернион.

Файловые функции
int iFileReadOpen(string)

Открывает определенный файл для чтения. Возвращает -1, если файл не может быть открыт.

string = путь к файлу. Если определен локальный путь (например, ".\\myFile.txt") он является относительным по
отношению к текущей папке 3D Rad или папке Вашего скомпилированного проекта.

int iFileWriteOpen(string)

Открывает определенный файл для записи. Возвращает -1, если файл не может быть открыт.

string = путь к файлу. Если определен локальный путь (например, ".\\myFile.txt") он является относительным по
отношению к текущей папке 3D Rad или папке Вашего скомпилированного проекта.

Предупреждение: эта функция навсегда удаляет определенный файл (?). Перед выполнением скрипта, включающего эту
функцию, дважды проверьте, что путь к файлу указывает на намеченный файл.

iFileClose(int)

Закрывает определенный файл.

int = дескриптор файла, возвращенный iFileReadOpen() или iFileWriteOpen().

float iFileValueRead(int)

Читает следующее значение из определенного файла.

int = дескриптор файла, возвращенный iFileReadOpen() или iFileWriteOpen()

iFileValueWrite(int,float,bool)

Записывает (добавляет в конец) определенное значение в определенный файл.

int = дескриптор файла, возвращенный iFileReadOpen() или iFileWriteOpen().


float = значение для записи.
bool = если это значение является "истиной", после записанного значения будет добавлен разделитель строки. Это
необходимо, если Вы хотите иметь возможность впоследствии читать значение из файла с использованием
iFileValueRead().

int iFileByteRead(int)

Читает следующий байт из определенного файла.

int = дескриптор файла, возвращенный iFileReadOpen() или iFileWriteOpen().

iFileByteWrite(int,int)

Записывает (добавляет в конец) определенный байт в определенный файл.

int = дескриптор файла, возвращенный iFileReadOpen() или iFileWriteOpen().


int = байт для записи.

iFileStringRead(int,string)

Читает следующую строку из определенного файла.

int = дескриптор файла, возвращенный iFileReadOpen() или iFileWriteOpen().


string = строка для помещения в нее читаемого текста.

iFileStringWrite(int,string,bool)

Записывает (добавляет в конец) определенную строку в определенный файл.

int = дескриптор файла, возвращенный iFileReadOpen() или iFileWriteOpen().


string = строка для записи.
bool = если это значение является "истиной", после записанного строки будет добавлен разделитель строки. Это
необходимо, если Вы хотите иметь возможность впоследствии читать строку из файла с использованием
iFileStringRead().

bool iFileEOF(int)

Возвращает истину, если любой предыдущий вызов iFile...Read() достиг конца файла, или произошла ошибка.

int = дескриптор файла, возвращенный iFileReadOpen() или iFileWriteOpen().

bool iFileExists(string)

Возвращает истину, если определенный файл существует.

string = имя файла для проверки. Если определен локальный файл (например, ".\\myFile.txt") то он является
относительным относительно папки 3D Rad или папки Вашего скомпилированного проекта.

iFileCopy(string,string)

Копирует файл.

string = имя исходного файла. Если определен локальный файл (например, ".\\myFile.txt") то он является
относительным относительно папки 3D Rad или папки Вашего скомпилированного проекта.
string = имя файла назначения. Если определен локальный файл (например, ".\\myFile.txt") то он является
относительным относительно папки 3D Rad или папки Вашего скомпилированного проекта.

iFileDelete(string)

Удаляет определенный файл.

string = имя файла для удаления. Если определен локальный файл (например, ".\\myFile.txt") то он является
относительным относительно папки 3D Rad или папки Вашего скомпилированного проекта.

iFolderCreate(string)

Создает новую папку.

string = имя папки для создания. Если определен локальный файл (например, ".\\myFile.txt") то он является
относительным относительно папки 3D Rad или папки Вашего скомпилированного проекта.

iFolderDelete(string)

Удаляет определенную папку, если она пустая. string = имя папки для удаления. Если определен локальный файл
(например, ".\\myFile.txt") то он является относительным относительно папки 3D Rad или папки Вашего
скомпилированного проекта.

int iFileDownload(string,string)

Загружает файл из определенного веб-расположения на локальный компьютер. Возвращает размер загруженного файла,
или -1, если произошла ошибка.

string = URL файла для загрузки (подобно, например "http://www.3drad.com/index.htm").


string = имя файла назначения. Если определен локальный файл (например, ".\\myFile.txt") то он является
относительным относительно папки 3D Rad или папки Вашего скомпилированного проекта.

Примечание: Обработка 3D Rad остановится до тех пор, пока не закончится загрузка, или пока она не будет прервана
пользователем (клавиша Esc).

int iFileDownloadPB(string,string)

То же самое, что и iFileDownload(), но во время загрузки отображает панель продвижения.

Примечание: когда функция вызвана, панель продвижения отображается по нижнему краю всех активных окон камеры на
экране. В Ваших скомпилированных проектах, Вы можете настроить визуальное отображение панели продвижения путем
изменения файла .\3DRad_res\system\progressBarDL.dds. ВЫ также можете использовать изображение другого формата,
открыв файл progressBarDL.x в редакторе ASCII и изменив имя 'progressBarDL.dds' на Ваш альтернативный файл
изображения (должен быть .dds, .png, .tga, .bmp или .jpg).

int iFileSize(string)

Возвращает размер определенного файла, или -1, если файл не может быть найден.

string = путь к файлу. Если определен локальный файл (например, ".\\myFile.txt") то он является относительным
относительно папки 3D Rad или папки Вашего скомпилированного проекта.

iLocalFolder(string)

Помещает путь к папке установки 3D Rad (или к папке Вашего скомпилированного проекта) в определенную строку.

string = строка для помещения в нее локальной папки.

bool iFileOpenDialog(string,string,string)

Открывает диалоговое окно открытия файла Windows, позволяющее пользователю просмотреть файловую систему и
выбрать файл. Возвращает истину, если файл был выбран, ложь, если диалоговое окно было отменено.

string = начальный путь к файлу. Когда функция возвращает, это будет путем к файлу, выбранному пользователем.

Примечание: строка должна включать имя файла, с расширением, или общее имя файла, подобно "c:\\foobar\\*.txt".
Расширение должно быть тем же самым, что и фильтр расширения (смотрите следующий параметр).

string = фильтр расширения. Например, "txt" позволит просматривать только файлы .txt. Установите этот параметр в
"*" для того, чтобы позволить просмотр файлов всех типов.
string = заголовок диалогового окна.

Примечание: стандартное диалоговое окно Windows не поддерживается в полноэкранном режиме. Скомпилированные


проекты, которые используют эту функцию, должны быть настроены для запуска только в оконном или развернутом
режиме.

bool iFileSaveDialog(string,string,string)

Открывает диалоговое окно сохранения как Windows, позволяющее пользователю просмотреть файловую систему и
ввести имя файла для сохранения. Возвращает истину, если файл был выбран, ложь, если диалоговое окно было
отменено или произошла ошибка. Смотрите также iFileOpenDialog().

Клавиатурные функции
bool iKeyDown(int)

Возвращает истину, если нажата определенная клавиша.

int = код клавиши. Используйте функцию iKeyCode() для того, чтобы найти клавиатурный код для определенной
клавиши клавиатуры. Установите это значение в -1 для проверки того,
была ли нажата какая-нибудь клавиша.

Примечание: не все клавиатуры позволяют определение более, чем двух одновременно нажатых клавиш, если одна из
них является [Ctrl] или [Alt].

int iKeyCode(string)

Возвращает код клавиши, соответствующей определенному описанию.

string = описание кода клавиши (например, 'DIK_A', 'DIK_B', и т.д.). Полный список описаний клавиатурных кодов
может быть найден в Интернет поиском "Keyboard Device Constants".

int iTypedChar(bool)

Возвращает символ (код ASCII), сгенерированный текущим нажатием клавиши. Возвращает ноль, если не была нажата
никакая клавиша, или нет печатаемого символа, ассоциированного с нажатой клавишей.

Обратите внимание на то, что, однако, она вернет -1, если нажата [Enter] и -2, если нажата [Backspace]. Поддерживаются
международные, стандартные, основанные на 256-кодовой ASCII клавиатуры.

bool = если "истина", эта функция вернет символ только один раз. Затем она будет возвращать ноль до тех пор,
пока клавиша не будет отпущена. Если "ложь", то она будет продолжать возвращать символ до тех пор, пока
клавиша не будет отпущена.

Функции мыши
float iMouseX()

Возвращает горизонтальное положение мыши, где 0,0 = левому полю, и значение, близкое к 1,0 = правому полю.
Обратите внимание на то, что вывод может быть очень близким к 1,0, но он всегда меньше 1,0. Если нужно, Вы можете
расчитать экранные координаты для объекта спрайта так, как указано:

x = iMouseX()*32.0-16.0;
y = 12.0-iMouseY()*24.0;

float iMouseY()

Возвращает вертикальное положение мыши, где 0,0f = верхнему полю, и значение, близкое к 1,0f = нижнему полю.
Обратите внимание на то, что вывод может быть очень близким к 1,0f, но всегда меньше 1,0f. Смотрите iMouseX() для
большего.

float iMouseZ(bool)

Возвращает положение колеса прокрутки мыши.

bool = определяет, возвращает ли относительные изменения колеса прокрутки с момента последнего вызова этой
функции (истина), или абсолютное положение колеса прокрутки с момента последнего вызова функции
iMouseZSet() (ложь).

bool iMouseButtonDown(int)

Возвращает истину, если определенная кнопка мыши нажата.

int = коды кнопки мыши, могут быть 0=левая, 1=правая, 2=средняя.

bool iMouseButtonClick(int)

Возвращает истину, если нажата определенная кнопка мыши.

int = коды кнопки мыши, могут быть 0=левая, 1=правая, 2=средняя.

Примечание: эта функция вернет истину только один раз. Она больше не будет возвращать истину до тех пор, пока
кнопка не будет отпущена и нажата еще раз.

Примечание: Вы не можете вызывать iMouseButtonClick() больше одного раза на проект, в любом скрипте, для одной и
той же кнопки. Если Вы сделаете это, только один вызов будет отвечать на нажатие кнопки. Все другие всегда вернут
ложь.

float iMouseLookX()

Возвращает текущий наклон (ориентацию по оси X, в градусах) для системы отслеживания мыши текущего объекта
скрипта. Система отслеживания мыши отслеживает, соответственно, перемещения и вращения мыши. Смотрите также
iMouseLookY(), iMouseLookSet(), iMouseLookSpeedSet(), iMouseLookYRangeSet().

Примечание: так как эта функция управляется расположением мыши, она может вызываться только один раз на цикл
скрипта и только из одного скрипта одновременно.

float iMouseLookY()

Возвращает текущее отклонение (ориентацию по оси Y, в градусах) для системы отслеживания мыши текущего объекта
скрипта. Смотрите также iMouseLookX().

Примечание: так как эта функция управляется расположением мыши, она может вызываться только один раз на цикл
скрипта и только из одного скрипта одновременно.

iMouseLookSet(float,float)

Устанавливает текущий наклон и отклонение (в градусах) для системы отслеживания мыши текущего объекта скрипта.
Смотрите также iMouseLookX().

iMouseLookSpeedSet(float,float)

Устанавливает чувствительность (скорость отклика) для системы отслеживания мыши текущего объекта скрипта.
Смотрите также iMouseLookX().

iMouseLookYRangeSet(float,float)

Устанавливает пределы наклона (минимум, максимум, в градусах) для системы отслеживания мыши текущего объекта
скрипта. Смотрите также iMouseLookX().

Функции устройства ввода


int iJoyCount()

Возвращает число установленных джойстиков / геймпадов / рулей.

bool iJoyButtonDown(int,int)

Возвращает "истину", если кнопка определенного джойстика / геймпада / руля нажата.

int = номер джойстика.


int = номер кнопки джойстика (0-127)

float iJoyX(int)

Возвращает положение оси X для определенного джойстика / геймпада / руля. Возвращаемое значение находится между
-1,0 и 1,0.

int = номер джойстика.

Примечание: никогда не предполагайте, что возвращаемое значение стабильно. Например, даже если джойстик
расслаблен (центрирован), для некоторых устройств, возвращаемое значение может быть не всегда нулем. Смотрите
iJoyXAverage().

float iJoyY(int)

Возвращает положение оси Y для определенного джойстика. Смотрите iJoyX() для большего.

float iJoyZ(int)

Возвращает положение оси Z для определенного джойстика. Смотрите iJoyX() для большего.

float iJoyXAverage(int,float)

Возвращает усредненное положение оси X для определенного джойстика / геймпада / руля.

int = номер джойстика.


float = усредненный период расчета, в секундах. В основном, усредненное значение возвращается после
суммирования прямых значений с оборудования за определенный период.

float iJoyYAverage(int,float)

Возвращает усредненное положение оси Y для определенного джойстика. iJoyXAverage() для большего.

float iJoyZAverage(int,float)

Возвращает усредненное положение оси Z для определенного джойстика. iJoyXAverage() для большего.

float iJoyU(int)

Возвращает положение дополнительной оси U для определенного джойстика. Смотрите iJoyX() для большего.

float iJoyV(int)

Возвращает положение дополнительной оси V для определенного джойстика. Смотрите iJoyX() для большего.

float iJoyPOV1/2/3/4(int)

Возвращает состояние контроллера направления для определенного джойстика. Значение измеряется в градусах с
севера (по часовой стрелке). Центральное положение - это -1.

iMidiInOpen(int,bool)

Открывает определенное устройство MIDI для ввода.

int = индекс устройства MIDI. Например, если у Вас есть 3 устройства MIDI, присоединенные к Вашему компьютеру,
0 будет первым устройством MIDI, 1 - вторым, и 2 - третьим.
bool = если это значение установлено в "истину", будет отображено окно сообщения, отображающее список
присоединенных устройств MIDI. Эта функция предназначается только для целей отладки.

Примечание: эта функция в настоящее время является экспериментальной.

bool iMidiInMessage(int,int,int)

Получает сообщение от открытого в настоящий момент устройства MIDI (смотрите функцию iMidiInOpen()). Для примера
использования, пожалуйста, проект примера, называемый "MIDI_test.3dr".

Примечание: эта функция в настоящее время является экспериментальной.

iMidiInClose()

Закрывает устройство MIDI, открытое iMidiInOpen().

Примечание: эта функция в настоящее время является экспериментальной.

Сетевые функции
bool iNetServerStart(string,string,int,int,int)

Запускает сетевую систему как сервер для локальной машины. Возвращает ложь, если система не может быть запущена
по какой-либо причине.

string = имя сессии. Присоединенные пользователи увидят в списке сетевых игр для соединения, когда клиентская
сетевая система запустится на их локальной машине. Смотрите iNetClientStart() для большего.
string = имя игрока. Имя идентифицирует сервер.
int = номер порта. Системный порт для использования для сетевого ввода / вывода данных. Например, 25857.
int = идентификатор игры. Это значение используется для генерации глобального уникального идентификатора для
приложения игры. Например, 9414234 и 372 являются допустимыми идентификаторами. Идентификатор должен
быть идентичен для вызовов и iNetServerStart(), и iNetClientStart().
int = размер сетевого буфера, в байтах. Эта функция выделяет память для использования в качестве временного
буфера для обмена данными. Обычно достаточно 100000 байт.

Примечание: после вызова этой функции Вы должны остановить сетевую систему перед выходом из проекта путем
вызова iNetStop().

bool iNetClientStart(string,string,int,int,string,int,int)

Запускает сетевую систему как клиента для локальной машины. Возвращает ложь, если система не может быть
запущена по какой-либо причине. Эта функция позволяет Вам либо открыть стандартное диалоговое окно подключения,
либо непосредственно подключиться к определенному удаленному серверу.

string = IP адрес сервера. Например, "64.64.64.64", или "64.64.64.64:8080", если также требуется номер порта.
string = имя игрока. Имя идентифицирует локальную клиентскую машину.
int = идентификатор игры. Смотрите iNetServerStart() для подробностей.
int = размер сетевого буфера, в байтах. Смотрите iNetServerStart() для подробностей.
string = опциональный заголовок диалогового окна, или "" для отсутствия заголовка.
int = последовательный номер удаленной игры. Если больше или равен нулю, опциональное диалоговое окно не
отображается. Определенный последовательный номер идентифицирует игру для выбора из списка доступных игр
на удаленном сервере. Первая игра в списке - это 0, вторая - это 1 и так далее.

Примечание: когда скрыто, диалоговое окно продолжит нормально обрабатываться. Фактически, система будет
имитировать действия пользователя, автоматически нажимая кнопку "Поиск", выбирая одну игру из списка и нажимая
"Соединиться".

int = время ожидания поиска игры, в секундах (только режим автоматического соединения).

Примечание: после вызова этой функции Вы должны остановить сетевую систему перед выходом из проекта путем
вызова iNetStop().

void iNetStop()

Останавливает сетевую систему для локальной машины, также освобождая все ресурсы памяти, выделенные вызовами
iNetServerStart() или iNetClientStart().

void iNetStringSend(string,int,bool)

Отправляет определенную строку на одну или на все присоединенные клиентские машины.

string = строка для отправки.


int = идентификатор игрока. Используйте ноль для отправки всем игрокам. Смотрите также iNetPlayerId().
bool = отправляются ли данные сообщения как гарантированные (истина) или нет (ложь). Гарантированные
сообщения удостоверяются в прибытии по назначению, даже если соединение подвергается запаздыванию и
потере данных, но они добавляют накладные расходы к процессу отправки.

int iNetStringReceive(string)

Получает строку с сервера. Смотрите iNetStringSend() для большего. Возвращает число полученных символов (длина
строки + 1), или ноль, если ничего не было получено.

string = строка для помещения в нее полученного текста.

Важно! если Вы вызываете iNetStringSend() сервере, Вы должны вызывать эту функцию на каждом цикле скрипта, на
всех клиентских компьютерах.

void iNetFloatArraySendEx(int,int,int,bool)

Отправляет определенную часть глобального массива значений с плавающей точкой на одну или на все присоединенные
клиентские машины. Глобальный массив значений с плавающей точкой - это, в основном, список значений, которые Вы
можете установить с использованием iNetFloatArraySet() перед отправкой его клиентам путем вызова этой функции.

int = индекс первого значения массива для отправки (также смотрите следующий параметр).
int = число значений для отправки. Например, установка предыдущего значения в 0 и этого значения в 7 отправит
первые 7 значений в массиве. Другой пример: установка предыдущего значения в 3 и этого значения в 7 отправит
четвертое значение в массиве, и 6 следующих за ним значений.
int = идентификатор игрока. Если ноль, то отправляется всем игрокам. Смотрите также iNetPlayerId().
bool = отправляются ли данные сообщения как гарантированные (истина) или нет (ложь).

Гарантированные сообщения удостоверяются в прибытии по назначению, даже если соединение подвергается


запаздыванию и потере данных, но они добавляют накладные расходы к процессу отправки.

Примечание: если эта функция вызывается на клиентской машине, массив будет получен только сервером.

void iNetFloatArraySend(int,int,bool)

Эта функция устарела. При вызове она фактически вызывает iNetFloatArraySendEx() с первым параметром,
установленным в ноль.

int iNetFloatArrayReceive()

Получает данные с сервера и соответственно обновляет глобальный массив значений с плавающей точкой. Смотрите
iNetFloatArraySend() для большего. Возвращает число полученных элементов массива, или ноль, если ничего не было
получено.

Важно! если Вы вызываете iNetFloatArraySend() на сервере, вы должны вызывать эту функцию на каждом цикле скрипта,
на всех клиентских компьютерах.

Примечание: эта функция также может быть вызвана на сервере, для получения массивов с клиентских машин.

void iNetFloatArraySet(int,float)

Устанавливает значение определенного элемента в глобальном массиве значений с плавающей точкой. Смотрите
iNetFloatArraySend() для большего.

float iNetFloatArrayGet(int)

Читает значение определенного элемента в глобальном массиве значений с плавающей точкой. Смотрите
iNetFloatArraySend() для большего.

int iNetPlayersCount()

Возвращает текущее число присоединенных машин, включая сервер.

int iNetPlayerId(int)

Восстанавливает уникальный идентификатор игрока, назначенный сетевой системой определенной машине, и помещает
его в определенную переменную DWORD. Возвращает -99999, если определенная машина больше не присоединена.
Возвращаемый идентификатор требует отправки эксклюзивного сообщения определенным игрокам, или восстановления
данных статистики определенных машин.

int = машина для восстановления идентификатора игрока. Он должен быть значением между 0 и 255.
Идентификатор сервера всегда 0x00000000.

Примечание: при выхове на клиенте эта функция всегда вернет -99999.

int iNetLocalPlayerMachine()

Возвращает последовательный номер, назначенный сетевой системой локальной машине, основанный на том, когда она
соединилась с игрой. Если локальная машина является сервером, возвращаемое значение равно нулю. Возвращает -1,
если система не находится в сетевом режиме.

Примечание: номер машины не изменяется, когда другой игрок покидает игру. Однако, если локальный игрок покидает
игру и затем еще раз соединяется, номер его машины может отличаться.

int iNetPlayerMachine(int)

Возвращает последовательный номер, назначенный сетевой системой машине, ассоциированной с определенным


игроком.

int = уникальный идентификатор игрока.

Примечание: при вызове на клиенте, эта функция всегда вернет -1.

iNetClientDisconnect(int)

Отсоединяет определенную клиентскую машину.

int = идентификатор машины игрока. Смотрите iNetPlayerId() для подробностей.

Примечание: вызов этой функции на клиентской машине не даст эффекта.

BOOL iNetSessionTerminated()

Возвращает истину, если соединение с сервером было утеряно. Локальная машина должна затем вызвать iNetStop() для
остановки сетевой системы и освобождения ресурсов. Если вызывается на серверной машине, эта функция вернет
истину, если сетевая система была остановлена.

BOOL iNetPlayersChanged()

Возвращает истину, если одна или больше клиентских машин соединились или покинули сессию.

float iNetLag(int)

Возвращает задержку определенной машины (пинг), в секундах.

int = идентификатор машины для извлечения задержки. Должно быть допустимым идентификатором игрока, как
возвращено iNetPlayerId().

Примечание: если эта функция вызывается на клиентской машине, этот параметр игнорируется, и возвращается
задержка локальной машины.

int iNetBPS(int)

Возвращает среднее число байт в секунду, обмениваемых определенной машиной с сетью присоединенных машин.

int = идентификатор машины для извлечения информации о ней. Должно быть допустимым идентификатором
игрока, как возвращено iNetPlayerId().

Примечание: если эта функция вызывается на клиентской машине, этот параметр игнорируется, и извлекается
информация для локальной машины.

int iNetBytesSent(int)

Возвращает общее число байт, отправленных определенной машиной.

int = идентификатор машины. Смотрите iNetBPS() для подробностей об этом параметре.

int iNetBytesReceived(int)

Возвращает общее число байт, полученных определенной машиной.

int = идентификатор машины. Смотрите iNetBPS() для подробностей об этом параметре.

Функции внешних библиотек динамической компоновки


int iDLLLoad(string)

Загружает определенный модуль DLL, и делает любую открытую функцию в нем доступной для вызова. Возвращает
дескриптор на загруженный модуль DLL, или ноль, если возникла проблема. Смотрите iDLLCall() для большего.

string = файл модуля DLL.

iDLLUnload(int)

Освобождает определенный модуль DLL.

int = дескриптор модуля DLL. Смотрите iDLLLoad().

bool iDLLCall(int,string,int)

Вызывает определенную функцию в определенном модуле DLL, передавая массив значений с плавающей точкой в
качестве параметра.

int = дескриптор модуля DLL. Смотрите iDLLLoad().


string = имя функции DLL.
int = индекс первого элемента массива значений с плавающей точкой для передачи пользовательской функции DLL.
Обычно это ноль. Для каждого объекта скрипта, массив значений с плавающей точкой определяется по умолчанию
и может быть доступен с использованием iDLLArraySet() и iDLLArrayGet().

Примечание: пожалуйста, смотрите демонстрационный проект, называемый "iDLLCall.3dr" (вложенная папка


"Script_Functions_Usage_Examples") для примера использования.

iDLLArraySet(int,float)

Устанавливает значение определенного элемента в массиве значений с плавающей точкой. Смотрите iDLLCall() для
большего.

int = индекс элемента массива для установки. Должен быть между 0 и 16383.

float iDLLArrayGet(int)

Возвращает значение определенного элемента в массиве значений с плавающей точкой. Смотрите iDLLCall() для
большего.

int = индекс элемента массива для получения. Должен быть между 0 и 16383.

Разные функции
bool iInitializing()

Возвращает истину, если скрипт выполняется в первый раз, после того, как проект был запущен. Эта функция также
возвращает истину при первом выполнении после того, как объект скрипта был запущен или сброшен другим объектом.

bool iDeinitializing()

Возвращает истину, если скрипт выполняется в последний раз, перед завершением ыполнения проекта. Эта функция
также возвращает истину при последнем выполнении после того, как объект скрипта был остановлен другим объектом
или вызовом iScriptStop().

iScriptStop()

Останавливает объект скрипта, предотвращая любое последующее исполнение кода. Объект скрипта может возобновить
исполнение, только если он запущен другим объектом.

Примечание: после вызова этой функции, скрипт будет выполнен еще раз. Вызываемая в течение этого последнего
исполнения функция iDeinitializing() вернет истину.

int iObjectHandle(int)

Эта специальная функция позволяет Вам программно определять значение OBJ_ некоторого объекта из его положения в
окне "Object HANDLE". Возвращаемое значение может быть передано функциям на месте фактической переменной
OBJ_.

int = индекс объекта для извлечения дескриптора, как он отображается в окне "Object HANDLE" (редактор скрипта),
с нулем, являющимся первым элементом,, 1 - вторым, и так далее. Если этот параметр равен -1, то функция вернет
общее число элементов в окне "Object HANDLE".

int iSystemTime(int)

Возвращает данные системных часов.

int = идентификатор информации для возвращения, как приведено ниже:


0 - Год
1 - Месяц
2 - День недели
3 - День
4 - Час
5 - Минута
6 - Секунда
7 - Миллисекунды

Например, iSystemTime(4) вернет текущий час.

int iDisplayWidth()

Возвращает текущую ширину дисплея в пикселях.

Примечание: если только проект не был скомпилирован и запущен в полноэкранном режиме, эта функция вернет ширину
рабочего стола Windows.

int iDisplayHeight()

Возвращает текущую высоту дисплея в пикселях.

Примечание: если только проект не был скомпилирован и запущен в полноэкранном режиме, эта функция вернет высоту
рабочего стола Windows.

iBoundingSphereFrustumCheckSet(bool)

Включает / отключает быстрое исключение визуализации объектов оболочки каркаса, если их окружающие сферы
находятся за пределами окна визуализации.

bool = "ложь" для отключения, "истина" для включения. По умолчанию установлена "истина".

float iFrameRate(bool)

Возвращает текущую частоту кадров (визуализированные кадры в секунду).

bool = возвращается ли усредненная частота кадров (истина) или мгновенная частота кадров (ложь).

Примечание: мгновенная частота кадров фактически основывается на времени, необходимом для обработки последнего
визуализированного кадра. для получения реальной мгновенной частоты кадров, ограничьте возвращаемое значение
внутри 0 и 60.

iGammaSet(float,float,float,float,float,float)

Устанавливает гамму для полноэкранного отображения (только скомпилированный проект).

float,float,float = факторы красного, зеленого и синего смещения (> 0,0). По умолчанию яркость для каждого
компонента rgb умножается на определенное значение. Так, например, определение 2,0 для всех трех компонентов
удвоит яркость отображения. Установленное по умолчанию значение равно 1,0 (нет смещения).
float,float,float = фактор смещения красного, зеленого, синего (между -1,0 и 1,0). Определенное значение
добавляется к яркости, установленной по умолчанию для каждого компонента rgb. Установленное по умолчанию
значение равно 0,0 (нет смещения).

Примечание: эта функция не оказывает воздействия при вызове в оконном режиме.

Примечание: эта функция является затратной с точки зрения расчетов и не должна вызываться на каждом цикле скрипта.

int iVertexShaderVersion(bool)

Возвращает версию вертексного шейдера, поддерживаемую аппаратным обеспечением.

bool = установите в "ложь" для возвращения главной версии (например, вернет 2, если версия равна 2.0),
установите в "истину" для возвращения младшей версии (например, вернет 0, если версия равна 2.0)

int iPixelShaderVersion(bool)

Возвращает версию пиксельного шейдера, поддерживаемую аппаратным обеспечением.

bool = установите в "ложь" для возвращения главной версии (например, вернет 2, если версия равна 2.0),
установите в "истину" для возвращения младшей версии (например, вернет 0, если версия равна 2.0)

iRenderingEnable(bool)

bool = установите в "ложь" для отключения визуализации сцены, обработки симуляции на максимальной скорости,
допускаемой системой. Это может быть полезно, если Вас интересует только результат симуляции, и Вы хотите
получить его как можно быстрее. Установите это значение в "истину" для восстановления визуализации.

iShadowsEnable(bool)

bool = установите в "ложь" для отключения визуализации объемных теней, что может значительно улучшить частоту
кадров. Установите это значение в "истину" для восстановления визуализации теней.

iEscKeyDisable()

Отключает клавишу Esc, которая обычно останавливает скомпилированный проект в любой момент и выходит в
Windows. Предупреждение, когда клавиша Esc отключена, то единственный способ завершения скомпилированного
проекта заключается в использовании объекта ExitFade. Используйте iEscKeyEnable() для повторного включения
клавиши Esc.

Примечание: эта функция работает только в скомпилированных проектах.

iSettingsDialogDisable()

Отключает диалоговое окно запуска, которое отображается, когда запускается скомпилированная версия Вашего
проекта. Обратите внимание на то, что это будет работать только в следующий раз, когда запустится скомпилированный
проект. Используйте iSettingsDialogEnable() для повторного включения диалогового окна запуска, или для того, чтобы
убедится в том, что оно отображается, даже если пользователь выбрал в диалоговом окне "Больше не показывать это
диалоговое окно".

Примечание: эта функция работает только в скомпилированных проектах.

iSimulationQualitySet(int)

Устанавливает точность симуляции.

int = установите это значение ненулевым для включения сокращенной точности (типичное значение 20). Чем ниже
значение, тем ниже точность и быстрее обработка. Уменьшенная точность значительно улучшает скорость
обработки там, где определено много суставов и выполняется много столкновений. Установите этот параметр в
ноль для установки максимальной поддерживаемой точности (установлено по умолчанию).

Примечание: установка этого параметра в отрицательное значение (например, -1) использует дополнительные расчеты
для того, чтобы сделать очень быстро перемещающиеся объекты твердого тела меньше похожими на проходящие через
основанные на полигонах объекты твердого тела (подобные стенам). Эта возможность затратная с точки зрения расчетов
и может привести к бедной частоте кадров.

iSimulationFrqSet(float)

Устанавливает частоту симуляции (скорость физической симуляции).

float = частота симуляции. Нормальная частота равна 0.016666f (1.0f/60.0f). Уменьшите значение для замедления
симуляции. Увеличьте ее для ускорения.

Примечание: частота циклов объектов скриптов не затрагивается изменением скорости симуляции.

Примечание: тогда как частота может быть установлена в ноль, практически порождая паузу симуляции потому, что
внезапные изменения в скорости симуляции порождают ошибки расчетов и влияют на точность симуляции, простая
установка скорости в ноль и возобновление ее до нормальной, не будет жизнеспособным решением для паузы в Ваших
играх. Вы можете только для сохранения целостности симуляции постепенно регулировать скорость симуляции в Ваших
скриптах.

Примечание: изменение скорости будет воздействовать только на физику. Оно не будет воздействовать на частицы,
скорость следящей камеры, или на любой другой эффект, чей расчет времени прямо не зависит от физической
симуляции.

bool iCommand(string)

Исполняет определенную команду Windows (CLI).

string = команда для исполнения.

Примечание: управление перейдет обратно к 3D Rad только тогда, когда команда будет завершена.

Примечание: эта функция открывает невидимое окно CLI, поэтому, если Вы используете ее для прямого запуска
приложения, приложение также может быть невидимым. Обходной путь заключается в запуске вместо этого пакетного
файла, который запустит приложение.

bool iCommandContinue(string)

Подобна iCommand(), за исключением того, что управление немедленно вернется к скрипту 3D Rad, с приложением,
работающим в фоне, до тех пор, пока оно не будет закрыто пользователем или не завершит само себя.

Примечание: если запущенное приложение не может завершить само себя, то ВЫ должны использовать метод
промежуточного пакетного файла (смотрите приведенную выше функцию iCommand()), в противном случае закрытие его
вручную будет невозможно, сделав его невидимым фоновым приложением.

iExitDocumentSet(string)

Открывает определенный файл после того, как программа завершена. Документ обычно является файлом .html,
например, руководством пользователя для Вашего скомпилированного проекта.

string = путь к открываемому файлу.

Примечание: эта функция работает только в скомпилированном проекте.

bool i3DPointVisible(OBJ_X,Vector3)

Возвращает истину, если определенная трехмерная точка находится внутри окна определенной камеры.

OBJ_X = объект камеры.


Vector3 = расположение трехмерной точки.

bool iSphereVisible(OBJ_X,Vector3,float)

Возвращает истину, если определенная сфера находится внутри окна определенной камеры.

OBJ_X = объект камеры.


Vector3 = расположение центра сферы.
float = радиус.

Примечание: смотрите демонстрационный проект SkinMeshImpostersVisible для примера использования.

i3DLocationToScreen(Vector3,Vector3,OBJ_X)

Vector3 = экранное расположение. Возвращает данные. Результирующие координаты определяют экранное


расположение с использованием того же самого соглашения, которое использован iObjectLocationSet() когда объект
является спрайтом, объектом вывода значения или вывода текста.

Примечание: если исходное трехмерное расположение находится за пределами отсечения просмотра, то возвращаемые
двухмерные координаты будут за пределами экрана.

Примечание: если исходное трехмерное расположение находится позади камеры, возвращаемые трехмерные
координаты будут оба 1000000000.

Vector3 = исходное трехмерное расположение для преобразования в экранные координаты.


OBJ_X = объект камеры для использования в качестве ссылки.

iScreenRay(Vector3,Vector3,Vector3,OBJ_X)

Возвращает трехмерный вектор с началом координат в расположении определенной камеры и указывающий по


направлению к трехмерному расположению, обозначенному определенными экранными координатами.

Vector3 = начало координат трехмерного луча, абсолютные координаты. Возвращает данные.


Vector3 = направление трехмерного луча. Возвращает данные. Обратите внимание на то, что длина этого вектора
является случайной. Обычно Вам понадобится определенная длина для Ваших расчетов. Вы можете установить
длину вектора с iVectorLengthSet().
Vector3 = экранные координаты, определяющие трехмерную точку на бесконечном расстоянии от камеры в
виртуальном пространстве. Координаты определяют экранное положение с использованием того же самого
соглашения, что использовано iObjectLocationSet() когда объект является объектом спрайта, вывода значения или
вывода текста.
OBJ_X = объект камеры (окно визуализации) для использования в качестве ссылки.

bool iSpherePicked(Vector3,float,OBJ_X,Vector3)

Возвращает истину, если определенная сфера указывается мышью.

Vector3 = центр сферы, координаты относительно мира.


float = радиус сферы.
OBJ_X = объект камеры (окно визуализации) для использования в качестве ссылки.
Vector3 = когда функция возвращает истину, эта переменная содержит координаты относительно мира точки,
обозначенной мышью, на поверхности сферы.

int iSphereSegmentIntersect(Vector3,float,Vector3,Vector3,Vector3,Vector3)

Возвращает число точек пересечения между определенной сферой и определенным сегментом.

Vector3 = центр сферы, координаты относительно мира.


float = радиус сферы.
Vector3 = расположение первой вершины для сегмента трехмерной линии, координаты относительно мира.
Vector3 = расположение второй вершины для сегмента трехмерной линии, координаты относительно мира.
Vector3 = когда функция возвращает ненулевое значение, эта переменная содержит координаты относительно мира
первой точки пересечения.
Vector3 = когда функция возвращает 2, эта переменная содержит координаты относительно мира второй точки
пересечения.

bool iScreenAreaPicked(float,float,float,float,bool)

Возвращает "истину" если определенная область экрана указывается мышью.

float,float = координаты верхнего левого угла указанной области экрана.


float,float = координаты нижнего правого угла указанной области экрана.
bool = если установлено в "истину", функция вернет "истину" только один раз, когда левая кнопка мыши нажата
тогда, как область указывается мышью.

Примечание: координаты определяют экранное расположение с использованием того же самого соглашения, что
использовано iObjectLocationSet(), когда объект является объектом спрайта, вывода значения или вывода текста.

iScreenshotSave(string)

Сохраняет скриншот как файл изображения в формате .jpg или .bmp. Для примера использования, пожалуйста, смотрите
пример проекта, называемый ScreenshotDemo.3dr.

string = путь к файлу (абсолютный или относительный) .jpg/.bmp для сохранения.

Примечание: скриншот всегда будет скриншотом всего экрана. Это значит, что, для Ваших приложений 3drad,
запущенных в оконном режиме, скриншот может включать части рабочего стола Windows.

iSuperScreenshotSave(string,int)

Сохраняет скриншот трехмерной сцены в качестве плиток. Каждая плитка является изображением с тем же самым
форматом, что и текущее отображение. Плитки могут быть объединены с использованием программы рисования или
специализированного инструмента, для формирования исходного скриншота, как изображения с уникально высоким
разрешением. Практически нет предела числу плиток, которые Вы можете произвести для каждого скриншота, таким
образом, практически нет предела в размере, в пикселях, окончательного изображения.

string = путь к основному файлу (абсолютный или относительный) .jpg/.bmp. 3D Rad будет использовать это имя как
основу для имени плиток как последовательности пронумерованных файлов.
int = число плиток на измерение. Например, 3 произведет 9 плиток (сетка плиток 3x3).

Примечание: эта функция не будет работать для спрайтов и текстов. Любой двухмерный элемент на экране не будет
включаться в созданное изображение. Активные частицы в сцене также могут выглядеть немного отличающимися в
окончательном изображении.

Примечание: эта функция разработана для работы в полноэкранном или развернутом режиме. В оконном режиме может
потребоваться дополнительное редактирование для объединения изображения и получения окончательного скриншота
высокого разрешения потому, что каждая плитка будет скриншотом всего экрана.

Олег Широколава, e-mail: shyrokolava@mail.ru