diff --git a/src/CRE/rob/ex_block.cpp b/src/CRE/rob/ex_block.cpp index 0ca08125..60e6176c 100644 --- a/src/CRE/rob/ex_block.cpp +++ b/src/CRE/rob/ex_block.cpp @@ -1482,7 +1482,7 @@ const float_t* RobCloth::SetOsagePlayDataInit(const float_t* opdi_data) { i->delta_pos.x = *opdi_data++; i->delta_pos.y = *opdi_data++; i->delta_pos.z = *opdi_data++; - i->prev_trans = i->pos; + i->prev_pos = i->pos; } return opdi_data; } @@ -3296,7 +3296,7 @@ static void sub_1402187D0(RobCloth* rob_cls, bool a2) { v37.y -= osage_gravity; node->delta_pos += v37; - node->prev_trans = node->pos; + node->prev_pos = node->pos; node->pos += node->delta_pos; } force *= rob_cls->skin_param_ptr->force_gain; @@ -3328,7 +3328,7 @@ static void sub_140219940(RobCloth* rob_cls) { mat4_transform_vector(&m, &root.normal, &root_node.normal); mat4_transform_vector(&m, (vec3*)&root.tangent, &root_node.tangent); root_node.tangent_sign = root.tangent.w; - root_node.prev_trans = root_node.pos; + root_node.prev_pos = root_node.pos; mat4_mul_translate(&m, &root_node.fixed_pos, &m); root.field_D8 = m; @@ -3491,13 +3491,13 @@ void sub_14021AA60(RobCloth* rob_cls, float_t step, bool a3) { for (ssize_t j = 0; j < root_count; j++, node++) { float_t fric = (1.0f - rob_cls->field_44) * rob_cls->skin_param_ptr->friction; if (step != 1.0f) { - vec3 delta_pos = node->pos - node->prev_trans; + vec3 delta_pos = node->pos - node->prev_pos; float_t trans_length = vec3::length(delta_pos); if (trans_length * step > 0.0f && trans_length != 0.0f) delta_pos *= 1.0f / trans_length; - node->pos = node->prev_trans + delta_pos * (trans_length * step); + node->pos = node->prev_pos + delta_pos * (trans_length * step); } sub_140482F30(&node[0].pos, &node[-root_count].pos, node[0].dist_top); @@ -3528,7 +3528,7 @@ void sub_14021AA60(RobCloth* rob_cls, float_t step, bool a3) { if (v39) node->delta_pos *= fric; - node->delta_pos = (node->pos - node->prev_trans) * v10; + node->delta_pos = (node->pos - node->prev_pos) * v10; if (!a3) { mat4& v49 = rob_cls->root.data()[j].field_118; @@ -3571,7 +3571,7 @@ static void sub_14021D480(RobCloth* rob_cls) { node->pos.y = floor_height; node->delta_pos = 0.0f; - node->prev_trans = node->pos; + node->prev_pos = node->pos; } } @@ -4052,7 +4052,7 @@ static void sub_14047D620(RobOsage* rob_osg, float_t step) { } if (coli_type != SkinParam::RootCollisionTypeEnd - && (coli_type != SkinParam::RootCollisionTypeBall || i != i_begin)) { + && (coli_type != SkinParam::RootCollisionTypeCapsule || i != i_begin)) { float_t v20 = (float_t)( OsageCollision::osage_capsule_cls(coli_ring, i[0].pos, i[-1].pos, data->skp_osg_node.coli_r) + OsageCollision::osage_capsule_cls(coli, i[0].pos, i[-1].pos, data->skp_osg_node.coli_r)); diff --git a/src/CRE/rob/rob.cpp b/src/CRE/rob/rob.cpp index 78b3d0a6..8aa4d44b 100644 --- a/src/CRE/rob/rob.cpp +++ b/src/CRE/rob/rob.cpp @@ -1251,6 +1251,7 @@ TaskRobManager* task_rob_manager; static int32_t opd_chara_data_counter = 0; static int32_t opd_maker_counter = 0; +static int32_t osage_test_no_pause = 0; static int32_t pv_osage_manager_counter = 0; static int32_t rob_thread_parent_counter = 0; @@ -2673,7 +2674,7 @@ static void rob_chara_item_equip_object_ctrl(rob_chara_item_equip_object* itm_eq } static void rob_chara_item_equip_ctrl(rob_chara_item_equip* rob_itm_equip) { - if (!rob_itm_equip->disable_update) + if (!osage_test_no_pause && !rob_itm_equip->disable_update) for (int32_t i = rob_itm_equip->first_item_equip_object; i < rob_itm_equip->max_item_equip_object; i++) rob_chara_item_equip_object_ctrl(&rob_itm_equip->item_equip_object[i]); } diff --git a/src/CRE/rob/rob.hpp b/src/CRE/rob/rob.hpp index 01acd760..736cd2dc 100644 --- a/src/CRE/rob/rob.hpp +++ b/src/CRE/rob/rob.hpp @@ -843,10 +843,10 @@ namespace SkinParam { }; enum RootCollisionType { - RootCollisionTypeEnd = 0x00, - RootCollisionTypeBall = 0x01, - RootCollisionTypeCapsule = 0x02, - RootCollisionTypeMax = 0x03, + RootCollisionTypeEnd = 0x00, + RootCollisionTypeCapsule = 0x01, + RootCollisionTypeCapsuleWithRoot = 0x02, + RootCollisionTypeMax = 0x03, }; } @@ -1805,7 +1805,7 @@ struct CLOTHNode { uint32_t flags; vec3 pos; vec3 fixed_pos; - vec3 prev_trans; + vec3 prev_pos; vec3 delta_pos; vec3 normal; vec3 tangent; diff --git a/src/ReDIVA/data_test/rob_osage_test.cpp b/src/ReDIVA/data_test/rob_osage_test.cpp index 21468ecf..66ad8ea4 100644 --- a/src/ReDIVA/data_test/rob_osage_test.cpp +++ b/src/ReDIVA/data_test/rob_osage_test.cpp @@ -1953,7 +1953,7 @@ void RobOsageTestDw::Root::ColiType::Update(bool value) { list_box = new dw::ListBox(comp, dw::MULTISELECT); list_box->AddItem("coli_type: End"); - list_box->AddItem("coli_type: Ball"); + list_box->AddItem("coli_type: Capsule"); list_box->AddItem("coli_type: Capsule(+root)"); list_box->SetItemIndex(rob_osage_test->root.coli_type); list_box->AddSelectionListener(new dw::SelectionListenerOnHook(