Перейти к контенту

Справочник по функциям и классам


Рекомендуемые сообщения

7.9, с инвентарностью - никак. Все инвентарные объекты имеют и мировую модель, вот вся эта физика и относится к ней. Кстати, upd:torque и upd:force вряд ли работают (по крайней мере в ЗП). В оригинальном спавне все 24 байта, отведенные под эти переменные заполнены случайным мусором. То ли глюк xrAI, то ли он их специально так корежит.

Поделиться этим сообщением


Ссылка на сообщение
malandrinus, по game_object я подобное начал делать. Пока рассортировал методы по классам, около трети методов описал и проверил в игре. Могу выслать в качестве затравки, чтобы с нуля не пришлось начинать.

Поделиться этим сообщением


Ссылка на сообщение
AndreySol, например - в acdc. В нем каждый package соответствует серверному классу. Логику чтения нет-пакета (порядок и формат параметров) смотри в методах state_read/update_read. Еще вариант - функции перепаковки нет-пакета из АМК мода, но там ограниченный набор классов.

Поделиться этим сообщением


Ссылка на сообщение

В таблице экспорта xr_3da.exe есть метод RayPick. Вот сигнатура:

int CObjectSpace::RayPick(CObjectSpace *this, _vector3<float> *start, _vector3<float> *dir, float range, collide::rq_target tgt, collide::rq_result *R, CObject *ignore_object)

Назначение аргументов, в целом, очевидно: start - стартовая точка, dir - направление трассировки (нормализованный вектор), range - диапазон трассировки. ignore_object - игнорируемый при трассировке объект, tgt - флаги геометрии:

 

enum collide::rq_target
{
rqtNone = 0x0, - не определять ничего
rqtObject = 0x1, - определять динамические объекты
rqtStatic = 0x2, - определять статическую геометрию
rqtShape = 0x4,
rqtObstacle = 0x8,
rqtBoth = 0x3,
rqtDyn = 0xD,
};

Результат доступен через R, там будет лежать объект типа collide::rq_result:

 

struct collide::rq_result
{
CObject *O;
float range;
int element;
};

В случае статической геометрии объект O будет пустой. Если нужно получить больше информации по статической геометрии, можно поковырять методы CDB::COLLIDER.

Если стоит задача работать с трассировкой луча из скриптов, можно посмотреть xray-extensions. В одной из последних ревизий malandrinus экспортировал RayPick в скрипты.

Изменено пользователем KD87
  • Нравится 2

Поделиться этим сообщением


Ссылка на сообщение

Не совсем. "Опорная" ось:

angle = clamp(wind_velocity * wind_strength * 0.05, 0, 1)
axis.x = -sin(wind_direction) * cos(drop_max_angle * angle - 1.57)
axis.y = sin(drop_max_angle * angle - 1.57)
axis.z = cos(wind_direction) * cos(drop_max_angle * angle - 1.57)
drop_max_angle ~ 10 градусов

Плюс для отдельных капель направления рандомизируются в диапазоне +-3 градуса от опорной оси, если я правильно помню.

Изменено пользователем KD87
  • Нравится 2

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
  • Куратор(ы) темы:

×
×
  • Создать...