MCPcopy Create free account
hub / github.com/WolfireGames/overgrowth / CDrawFinalBoneIK

Function CDrawFinalBoneIK

Source/Objects/movementobject.cpp:3407–3501  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3405}
3406
3407static 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(

Callers

nothing calls this directly

Calls 11

CDrawLegImplFunction · 0.85
CDrawArmsImplFunction · 0.85
CDrawHeadImplFunction · 0.85
CDrawBodyImplFunction · 0.85
CDrawEarImplFunction · 0.85
CDrawTailImplFunction · 0.85
rigged_objectMethod · 0.80
skeletonMethod · 0.80
GetVarPtrCacheMethod · 0.80
GetAddressOfPropertyMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected