本文整理汇总了C++中Fmatrix::mulB_43方法的典型用法代码示例。如果您正苦于以下问题:C++ Fmatrix::mulB_43方法的具体用法?C++ Fmatrix::mulB_43怎么用?C++ Fmatrix::mulB_43使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Fmatrix
的用法示例。
在下文中一共展示了Fmatrix::mulB_43方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: calc_cam_diff_rot
void calc_cam_diff_rot(Fmatrix item_transform, Fvector diff, Fvector& res)
{
Fmatrix cam_m;
cam_m.i.set (Device.vCameraRight);
cam_m.j.set (Device.vCameraTop);
cam_m.k.set (Device.vCameraDirection);
cam_m.c.set (Device.vCameraPosition);
Fmatrix R;
R.identity ();
if(!fis_zero(diff.x))
{
R.rotation(cam_m.i,diff.x);
}else
if(!fis_zero(diff.y))
{
R.rotation(cam_m.j,diff.y);
}else
if(!fis_zero(diff.z))
{
R.rotation(cam_m.k,diff.z);
};
Fmatrix item_transform_i;
item_transform_i.invert (item_transform);
R.mulB_43(item_transform);
R.mulA_43(item_transform_i);
R.getHPB (res);
res.mul (180.0f/PI);
}
示例2: GetUILocatorMatrix
void CUIArtefactDetectorElite::GetUILocatorMatrix(Fmatrix& _m)
{
Fmatrix trans = m_parent->HudItemData()->m_item_transform;
u16 bid = m_parent->HudItemData()->m_model->LL_BoneID("cover");
Fmatrix cover_bone = m_parent->HudItemData()->m_model->LL_GetTransform(bid);
_m.mul (trans, cover_bone);
_m.mulB_43 (m_map_attach_offset);
}
示例3: InterpolateTransform
void PHDynamicData::InterpolateTransform(Fmatrix &transform){
//DMXPStoFMX(dBodyGetRotation(body),
// dBodyGetPosition(body),BoneTransform);
body_interpolation.InterpolateRotation(transform);
body_interpolation.InterpolatePosition(transform.c);
Fmatrix zero;
zero.set (ZeroTransform);
zero.invert ();
//BoneTransform.mulB(zero);
transform.mulB_43 (zero);
}
示例4: GetCurrentHudOffsetIdx
void CWeapon::UpdateHudAdditonal (Fmatrix& trans)
{
CActor* pActor = smart_cast<CActor*>(H_Parent());
if(!pActor) return;
if( (IsZoomed() && m_zoom_params.m_fZoomRotationFactor<=1.f) ||
(!IsZoomed() && m_zoom_params.m_fZoomRotationFactor>0.f))
{
u8 idx = GetCurrentHudOffsetIdx();
// if(idx==0) return;
attachable_hud_item* hi = HudItemData();
R_ASSERT (hi);
Fvector curr_offs, curr_rot;
curr_offs = hi->m_measures.m_hands_offset[0][idx];//pos,aim
curr_rot = hi->m_measures.m_hands_offset[1][idx];//rot,aim
curr_offs.mul (m_zoom_params.m_fZoomRotationFactor);
curr_rot.mul (m_zoom_params.m_fZoomRotationFactor);
Fmatrix hud_rotation;
hud_rotation.identity ();
hud_rotation.rotateX (curr_rot.x);
Fmatrix hud_rotation_y;
hud_rotation_y.identity ();
hud_rotation_y.rotateY (curr_rot.y);
hud_rotation.mulA_43 (hud_rotation_y);
hud_rotation_y.identity ();
hud_rotation_y.rotateZ (curr_rot.z);
hud_rotation.mulA_43 (hud_rotation_y);
hud_rotation.translate_over (curr_offs);
trans.mulB_43 (hud_rotation);
if(pActor->IsZoomAimingMode())
m_zoom_params.m_fZoomRotationFactor += Device.fTimeDelta/m_zoom_params.m_fZoomRotateTime;
else
m_zoom_params.m_fZoomRotationFactor -= Device.fTimeDelta/m_zoom_params.m_fZoomRotateTime;
clamp(m_zoom_params.m_fZoomRotationFactor, 0.f, 1.f);
}
}
示例5: calc_transform
void player_hud::calc_transform(u16 attach_slot_idx, const Fmatrix& offset, Fmatrix& result)
{
Fmatrix ancor_m = m_model->dcast_PKinematics()->LL_GetTransform(m_ancors[attach_slot_idx]);
result.mul (m_transform, ancor_m);
result.mulB_43 (offset);
}
示例6: Level
void render_box (IRenderVisual *visual, const Fmatrix &xform, const Fvector &additional, bool draw_child_boxes, const u32 &color)
{
CDebugRenderer &renderer = Level().debug_renderer();
IKinematics *kinematics = smart_cast<IKinematics*>(visual);
VERIFY (kinematics);
u16 bone_count = kinematics->LL_BoneCount();
VERIFY (bone_count);
u16 visible_bone_count = kinematics->LL_VisibleBoneCount();
if (!visible_bone_count)
return;
Fmatrix matrix;
Fvector *points = (Fvector*)_alloca(visible_bone_count*8*sizeof(Fvector));
Fvector *I = points;
for (u16 i=0; i<bone_count; ++i) {
if (!kinematics->LL_GetBoneVisible(i))
continue;
const Fobb &obb = kinematics->LL_GetData(i).obb;
if (fis_zero(obb.m_halfsize.square_magnitude())) {
VERIFY (visible_bone_count > 1);
--visible_bone_count;
continue;
}
Fmatrix Mbox;
obb.xform_get (Mbox);
const Fmatrix &Mbone = kinematics->LL_GetBoneInstance(i).mTransform;
Fmatrix X;
matrix.mul_43 (xform,X.mul_43(Mbone,Mbox));
Fvector half_size = Fvector().add(obb.m_halfsize,additional);
matrix.mulB_43 (Fmatrix().scale(half_size));
if (draw_child_boxes)
renderer.draw_obb (matrix,color);
static const Fvector local_points[8] = {
Fvector().set(-1.f,-1.f,-1.f),
Fvector().set(-1.f,-1.f,+1.f),
Fvector().set(-1.f,+1.f,+1.f),
Fvector().set(-1.f,+1.f,-1.f),
Fvector().set(+1.f,+1.f,+1.f),
Fvector().set(+1.f,+1.f,-1.f),
Fvector().set(+1.f,-1.f,+1.f),
Fvector().set(+1.f,-1.f,-1.f)
};
for (u32 i=0; i<8; ++i, ++I)
matrix.transform_tiny (*I,local_points[i]);
}
VERIFY (visible_bone_count);
if (visible_bone_count == 1) {
renderer.draw_obb (matrix,color);
return;
}
VERIFY ((I - points) == (visible_bone_count*8));
MagicBox3 box = MagicMinBox(visible_bone_count*8,points);
box.ComputeVertices (points);
Fmatrix result;
result.identity ();
result.c = box.Center();
result.i.sub(points[3],points[2]).normalize();
result.j.sub(points[2],points[1]).normalize();
result.k.sub(points[2],points[6]).normalize();
Fvector scale;
scale.x = points[3].distance_to(points[2])*.5f;
scale.y = points[2].distance_to(points[1])*.5f;
scale.z = points[2].distance_to(points[6])*.5f;
result.mulB_43 (Fmatrix().scale(scale));
renderer.draw_obb (result,color);
}