$bodygroup
$bodygroup
- это QC команда , доступно для всех игр на движке Source.
это которая создаёт группу мешей, которые могут быть включены, отключены или же выглядеть полностью по-другому. Серверный код может изменять их состояние.
Пример
Эта body-группа позволяет иметь на оружии несколько прицелов (например мушку, лазерный прицел или же никаких прицелов вообще):
$bodygroup sights
{
studio ironsights
studio laser_dot
blank
}
Эта body-группа обозначает целый регион модели, который использует несколько костей:
$bodygroup chest
{
studio chest_with_no_armor
studio chest_with_light_armor
studio chest_with_heavy_armor
studio chest_with_super_armor
}
Bodyгруппы в LOD мешах
Крайне рекомендуется использование LOD'ов - особенно для геометрии с высоким количеством полигонов. LOD'ы могут быть использованы с помощью QC-команды $lod
:
$lod 12
{
replacemodel chest_with_no_armor chest_with_no_armor_lod1
replacemodel chest_with_light_armor chest_with_light_armor_lod1
replacemodel chest_with_heavy_armor chest_with_heavy_armor_lod1
replacemodel chest_with_super_armor chest_with_super_armor_lod1
}
$lod 18
{
replacemodel chest_with_no_armor chest_with_no_armor_lod2
replacemodel chest_with_light_armor chest_with_light_armor_lod2
replacemodel chest_with_heavy_armor chest_with_heavy_armor_lod2
replacemodel chest_with_super_armor chest_with_super_armor_lod2
}
$shadowlod
{
replacemodel chest_with_no_armor chest_with_no_armor_lod2
replacemodel chest_with_light_armor chest_with_light_armor_lod2
replacemodel chest_with_heavy_armor chest_with_heavy_armor_lod2
replacemodel chest_with_super_armor chest_with_super_armor_lod2
}
Программирование
Чтобы изменить состояние body-группы:
static int bodygroup = FindBodygroupByName("chest"); // используйте эту строку лишь один раз
SetBodygroup( bodygroup, 1 ); // установить body-группу "chest" на второе значение (нумерация идёт с нуля)
Измените слово "chest" на название body-группы, состояние которой вам необходимо поменять.
По стандарту, класс CBaseAnimating
поддерживает 4,294,967,296 комбинаций (32 бита), а классCBaseViewModel
- 256 (8 битов). Вы можете увеличить этот лимит, изменив SendProp для m_nBody
.
Чтобы посчитать, сколько комбинаций вам нужно, перемножьте друг на друга размер всех ваших body-групп. Для примера из этой страницы будет 3 * 4 = 12, но добавив, например, две дополнительных группы того же размера, кол-во комбинаций поднимется до 144.