| 3405 | } |
| 3406 | |
| 3407 | static void CDrawFinalBoneIK(MovementObject* mo, int num_frames) { |
| 3408 | PROFILER_ZONE(g_profiler_ctx, "C++ Draw Final Bone IK"); |
| 3409 | MovementObject& this_mo = *mo; |
| 3410 | RiggedObject& rigged_object = *this_mo.rigged_object(); |
| 3411 | Skeleton& skeleton = rigged_object.skeleton(); |
| 3412 | |
| 3413 | PROFILER_ENTER(g_profiler_ctx, "Get AS pointers"); |
| 3414 | ASContext* as_context = this_mo.as_context.get(); |
| 3415 | float& breath_amount = *(float*)as_context->module.GetVarPtrCache("breath_amount"); |
| 3416 | float& max_speed = *(float*)as_context->module.GetVarPtrCache("max_speed"); |
| 3417 | float& true_max_speed = *(float*)as_context->module.GetVarPtrCache("true_max_speed"); |
| 3418 | int& idle_type = *(int*)as_context->module.GetVarPtrCache("idle_type"); |
| 3419 | bool& on_ground = *(bool*)as_context->module.GetVarPtrCache("on_ground"); |
| 3420 | bool& flip_info_flipping = *(bool*)((asIScriptObject*)as_context->module.GetVarPtrCache("flip_info"))->GetAddressOfProperty(0); |
| 3421 | float& threat_amount = *(float*)as_context->module.GetVarPtrCache("threat_amount"); |
| 3422 | bool& ledge_info_on_ledge = *(bool*)((asIScriptObject*)as_context->module.GetVarPtrCache("ledge_info"))->GetAddressOfProperty(0); |
| 3423 | float& time = game_timer.game_time; |
| 3424 | float& time_step = game_timer.timestep; |
| 3425 | int& species = *(int*)as_context->module.GetVarPtrCache("species"); |
| 3426 | int& skip_ear_physics_counter = *(int*)as_context->module.GetVarPtrCache("skip_ear_physics_counter"); |
| 3427 | |
| 3428 | CScriptArrayWrapper<BoneTransform> key_transforms((CScriptArray*)as_context->module.GetVarPtrCache("key_transforms")); |
| 3429 | CScriptArrayWrapper<int> ik_chain_start_index((CScriptArray*)as_context->module.GetVarPtrCache("ik_chain_start_index")); |
| 3430 | CScriptArrayWrapper<int> ik_chain_elements((CScriptArray*)as_context->module.GetVarPtrCache("ik_chain_elements")); |
| 3431 | CScriptArrayWrapper<int> ik_chain_length((CScriptArray*)as_context->module.GetVarPtrCache("ik_chain_length")); |
| 3432 | CScriptArrayWrapper<float> ik_chain_bone_lengths((CScriptArray*)as_context->module.GetVarPtrCache("ik_chain_bone_lengths")); |
| 3433 | CScriptArrayWrapper<int> bone_children((CScriptArray*)as_context->module.GetVarPtrCache("bone_children")); |
| 3434 | CScriptArrayWrapper<int> bone_children_index((CScriptArray*)as_context->module.GetVarPtrCache("bone_children_index")); |
| 3435 | CScriptArrayWrapper<BoneTransform> skeleton_bind_transforms((CScriptArray*)as_context->module.GetVarPtrCache("skeleton_bind_transforms")); |
| 3436 | CScriptArrayWrapper<BoneTransform> inv_skeleton_bind_transforms((CScriptArray*)as_context->module.GetVarPtrCache("inv_skeleton_bind_transforms")); |
| 3437 | |
| 3438 | CScriptArrayWrapper<vec3> arm_points((CScriptArray*)as_context->module.GetVarPtrCache("arm_points")); |
| 3439 | CScriptArrayWrapper<vec3> old_arm_points((CScriptArray*)as_context->module.GetVarPtrCache("old_arm_points")); |
| 3440 | CScriptArrayWrapper<vec3> temp_old_arm_points((CScriptArray*)as_context->module.GetVarPtrCache("temp_old_arm_points")); |
| 3441 | CScriptArrayWrapper<float> ear_rotation((CScriptArray*)as_context->module.GetVarPtrCache("ear_rotation")); |
| 3442 | CScriptArrayWrapper<float> ear_rotation_time((CScriptArray*)as_context->module.GetVarPtrCache("ear_rotation_time")); |
| 3443 | CScriptArrayWrapper<float> target_ear_rotation((CScriptArray*)as_context->module.GetVarPtrCache("target_ear_rotation")); |
| 3444 | CScriptArrayWrapper<vec3> ear_points((CScriptArray*)as_context->module.GetVarPtrCache("ear_points")); |
| 3445 | CScriptArrayWrapper<vec3> old_ear_points((CScriptArray*)as_context->module.GetVarPtrCache("old_ear_points")); |
| 3446 | CScriptArrayWrapper<vec3> temp_old_ear_points((CScriptArray*)as_context->module.GetVarPtrCache("temp_old_ear_points")); |
| 3447 | PROFILER_LEAVE(g_profiler_ctx); |
| 3448 | |
| 3449 | CDrawLegImpl( |
| 3450 | rigged_object, skeleton, |
| 3451 | ik_chain_start_index, ik_chain_elements, ik_chain_bone_lengths, skeleton_bind_transforms, inv_skeleton_bind_transforms, |
| 3452 | false, key_transforms[kHipKey], key_transforms[kLeftLegKey]); |
| 3453 | CDrawLegImpl( |
| 3454 | rigged_object, skeleton, |
| 3455 | ik_chain_start_index, ik_chain_elements, ik_chain_bone_lengths, skeleton_bind_transforms, inv_skeleton_bind_transforms, |
| 3456 | true, key_transforms[kHipKey], key_transforms[kRightLegKey]); |
| 3457 | |
| 3458 | CDrawArmsImpl( |
| 3459 | this_mo, rigged_object, skeleton, |
| 3460 | breath_amount, max_speed, true_max_speed, idle_type, on_ground, flip_info_flipping, threat_amount, ledge_info_on_ledge, |
| 3461 | skeleton_bind_transforms.c_script_array_, inv_skeleton_bind_transforms.c_script_array_, ik_chain_start_index.c_script_array_, ik_chain_elements.c_script_array_, ik_chain_length.c_script_array_, key_transforms.c_script_array_, arm_points.c_script_array_, old_arm_points.c_script_array_, temp_old_arm_points.c_script_array_, bone_children.c_script_array_, bone_children_index.c_script_array_, |
| 3462 | key_transforms[kChestKey], key_transforms[kLeftArmKey], key_transforms[kRightArmKey], num_frames); |
| 3463 | |
| 3464 | CDrawHeadImpl( |
nothing calls this directly
no test coverage detected