MCPcopy Create free account
hub / github.com/OGSR/OGSR-Engine / SyncNetState

Method SyncNetState

ogsr_engine/xrGame/PHSkeleton.cpp:500–559  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

498void CPHSkeleton::SetNotNeedSave() { m_flags.set(CSE_PHSkeleton::flNotSave, TRUE); }
499
500void CPHSkeleton::SyncNetState()
501{
502 auto obj = PPhysicsShellHolder();
503 if (!obj)
504 return;
505 auto se_obj = obj->alife_object();
506 if (!se_obj)
507 return;
508
509 m_flags.set(CSE_PHSkeleton::flSavedData, TRUE);
510 if (obj->PPhysicsShell() && obj->PPhysicsShell()->isActive())
511 m_flags.set(CSE_PHSkeleton::flActive, obj->PPhysicsShell()->isEnabled());
512
513 auto po = smart_cast<CSE_PHSkeleton*>(se_obj);
514 ASSERT_FMT(po, "[%s]: %s is not CSE_PHSkeleton", __FUNCTION__, obj->Name_script());
515 po->_flags.assign(m_flags.get());
516
517 auto& saved_bones = po->saved_bones;
518 const u16 bones_number = obj->PHGetSyncItemsNumber();
519 const auto K = smart_cast<IKinematics*>(obj->Visual());
520 if (K)
521 {
522 saved_bones.bones_mask = K->LL_GetBonesVisible();
523 saved_bones.root_bone = K->LL_GetBoneRoot();
524 }
525 else
526 {
527 saved_bones.bones_mask.set(u64(-1), u64(-1));
528 saved_bones.root_bone = 0;
529 }
530
531 Fvector min, max;
532 min.set(F_MAX, F_MAX, F_MAX);
533 max.set(-F_MAX, -F_MAX, -F_MAX);
534 saved_bones.bones.clear();
535
536 for (u16 i = 0; i < bones_number; i++)
537 {
538 SPHNetState state;
539 obj->PHGetSyncItem(i)->get_State(state);
540 Fvector& p = state.position;
541 if (p.x < min.x)
542 min.x = p.x;
543 if (p.y < min.y)
544 min.y = p.y;
545 if (p.z < min.z)
546 min.z = p.z;
547 if (p.x > max.x)
548 max.x = p.x;
549 if (p.y > max.y)
550 max.y = p.y;
551 if (p.z > max.z)
552 max.z = p.z;
553 saved_bones.bones.push_back(state);
554 }
555
556 min.sub(2.f * EPS_L);
557 max.add(2.f * EPS_L);

Callers

nothing calls this directly

Calls 15

u64Enum · 0.85
VisualMethod · 0.80
LL_GetBonesVisibleMethod · 0.80
LL_GetBoneRootMethod · 0.80
set_min_maxMethod · 0.80
PPhysicsShellHolderFunction · 0.70
alife_objectMethod · 0.45
setMethod · 0.45
isActiveMethod · 0.45
isEnabledMethod · 0.45
assignMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected