-
Автор темы
- #1
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Код:
void __fastcall c_cs_player _ :: accumulate_layers (c_cs_player * player, uintptr_t edx, bone_setup ** setup,
c_vector3d * pos, float time, quaternion * q)
{
// fix accumulate_layers
if (! player ||! player-> is_player () ||
! player-> is_alive () || player-> is_dormant ())
return _accumulate_layers (player, edx, setup, pos, time, q);
std :: array <size_t, 13> layers;
layers.fill (layers.size ());
for (auto i = 0u; i <13; i ++)
{
const auto & layer = (* player-> get_animation_layers ()) [i];
if (layer.weight> 0 && layer.order> = 0 && layer.order <layers.size ())
layers [layer.order] = i;
}
_accumulate_layers (player, edx, setup, pos, time, q);
for (auto i = 0u; i <layers.size (); i ++)
{
const auto layer_num = layers [i];
if (layer_num <0 || layer_num> = 13)
continue;
const auto & layer = (* player-> get_animation_layers ()) [i];
if (layer.weight <= 0)
continue;
(* setup) -> accumulate_pose (pos, q, layer.sequence, layer.cycle, layer.weight, global_vars_base-> curtime, player-> get_ik_context ());
}
} [/ CODE]