本文整理汇总了C++中Fmatrix::rotateY方法的典型用法代码示例。如果您正苦于以下问题:C++ Fmatrix::rotateY方法的具体用法?C++ Fmatrix::rotateY怎么用?C++ Fmatrix::rotateY使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Fmatrix
的用法示例。
在下文中一共展示了Fmatrix::rotateY方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
void
CHelicopter::BoneMGunCallbackY(CBoneInstance *B)
{
CHelicopter * P = static_cast<CHelicopter*>(B->callback_param());
Fmatrix rY; rY.rotateY (P->m_cur_rot.y);
B->mTransform.mulB_43 (rY);
}
示例2:
void CIKLimb::BonesCallback1 (CBoneInstance* B)
{
SCalculateData* D=(SCalculateData*)B->Callback_Param;
CIKLimb* L=D->m_limb ;
float const *x=D->m_angles ;
Fmatrix bm;//B->mTransform ;
bm.rotateY(x[3]) ;
CKinematics *K=D->m_K;
CBoneData& BD=K->LL_GetData(L->m_bones[1]);
Fmatrix cmp_save;cmp_save.set(B->mTransform) ;
B->mTransform.mul_43(K->LL_GetTransform(BD.GetParentID()),BD.bind_transform);
Fmatrix dd;dd.mul_43(Fmatrix().invert(B->mTransform),cmp_save);
Fvector a;dd.getXYZ(a);
B->mTransform.mulB_43(bm) ;
Fmatrix cmp_savei;cmp_savei.invert(cmp_save);
Fmatrix dif;dif.mul_43(cmp_savei,B->mTransform);
}
示例3: iFloor
void CEnvironment::RenderSky ()
{
#ifndef _EDITOR
if (0==g_pGameLevel) return ;
#endif
// clouds_sh.create ("clouds","null");
//. this is the bug-fix for the case when the sky is broken
//. for some unknown reason the geoms happen to be invalid sometimes
//. if vTune show this in profile, please add simple cache (move-to-forward last found)
//. to the following functions:
//. CResourceManager::_CreateDecl
//. CResourceManager::CreateGeom
if(bNeed_re_create_env)
{
sh_2sky.create (&m_b_skybox,"skybox_2t");
sh_2geom.create (v_skybox_fvf,RCache.Vertex.Buffer(), RCache.Index.Buffer());
clouds_sh.create ("clouds","null");
clouds_geom.create (v_clouds_fvf,RCache.Vertex.Buffer(), RCache.Index.Buffer());
bNeed_re_create_env = FALSE;
}
::Render->rmFar ();
// draw sky box
Fmatrix mSky;
mSky.rotateY (CurrentEnv.sky_rotation);
mSky.translate_over (Device.vCameraPosition);
u32 i_offset,v_offset;
u32 C = color_rgba(iFloor(CurrentEnv.sky_color.x*255.f), iFloor(CurrentEnv.sky_color.y*255.f), iFloor(CurrentEnv.sky_color.z*255.f), iFloor(CurrentEnv.weight*255.f));
// Fill index buffer
u16* pib = RCache.Index.Lock (20*3,i_offset);
CopyMemory (pib,hbox_faces,20*3*2);
RCache.Index.Unlock (20*3);
// Fill vertex buffer
v_skybox* pv = (v_skybox*) RCache.Vertex.Lock (12,sh_2geom.stride(),v_offset);
for (u32 v=0; v<12; v++) pv[v].set (hbox_verts[v*2],C,hbox_verts[v*2+1]);
RCache.Vertex.Unlock (12,sh_2geom.stride());
// Render
RCache.set_xform_world (mSky);
RCache.set_Geometry (sh_2geom);
RCache.set_Shader (sh_2sky);
RCache.set_Textures (&CurrentEnv.sky_r_textures);
RCache.Render (D3DPT_TRIANGLELIST,v_offset,0,12,i_offset,20);
// Sun
::Render->rmNormal ();
eff_LensFlare->Render (TRUE,FALSE,FALSE);
}
示例4:
void CWeaponStatMgun::BoneCallbackY (CBoneInstance *B)
{
CWeaponStatMgun *P = static_cast<CWeaponStatMgun*>(B->callback_param());
Fmatrix rY; rY.rotateY (P->m_cur_y_rot);
B->mTransform.mulB_43(rY);
}
示例5:
void CActor::g_Orientate (u32 mstate_rl, float dt)
{
static float fwd_l_strafe_yaw = deg2rad(pSettings->r_float(ACTOR_ANIM_SECT, "fwd_l_strafe_yaw"));
static float back_l_strafe_yaw = deg2rad(pSettings->r_float(ACTOR_ANIM_SECT, "back_l_strafe_yaw"));
static float fwd_r_strafe_yaw = deg2rad(pSettings->r_float(ACTOR_ANIM_SECT, "fwd_r_strafe_yaw"));
static float back_r_strafe_yaw = deg2rad(pSettings->r_float(ACTOR_ANIM_SECT, "back_r_strafe_yaw"));
static float l_strafe_yaw = deg2rad(pSettings->r_float(ACTOR_ANIM_SECT, "l_strafe_yaw"));
static float r_strafe_yaw = deg2rad(pSettings->r_float(ACTOR_ANIM_SECT, "r_strafe_yaw"));
if(!g_Alive())return;
// visual effect of "fwd+strafe" like motion
float calc_yaw = 0;
if(mstate_real&mcClimb)
{
if(g_LadderOrient()) return;
}
switch(mstate_rl&mcAnyMove)
{
case mcFwd+mcLStrafe:
calc_yaw = +fwd_l_strafe_yaw;//+PI_DIV_4;
break;
case mcBack+mcRStrafe:
calc_yaw = +back_r_strafe_yaw;//+PI_DIV_4;
break;
case mcFwd+mcRStrafe:
calc_yaw = -fwd_r_strafe_yaw;//-PI_DIV_4;
break;
case mcBack+mcLStrafe:
calc_yaw = -back_l_strafe_yaw;//-PI_DIV_4;
break;
case mcLStrafe:
calc_yaw = +l_strafe_yaw;//+PI_DIV_3-EPS_L;
break;
case mcRStrafe:
calc_yaw = -r_strafe_yaw;//-PI_DIV_4+EPS_L;
break;
}
// lerp angle for "effect" and capture torso data from camera
angle_lerp (r_model_yaw_delta,calc_yaw,PI_MUL_4,dt);
// build matrix
Fmatrix mXFORM;
mXFORM.rotateY (-(r_model_yaw + r_model_yaw_delta));
mXFORM.c.set (Position());
XFORM().set (mXFORM);
//-------------------------------------------------
float tgt_roll = 0.f;
if (mstate_rl&mcLookout)
{
tgt_roll = (mstate_rl&mcLLookout)?-ACTOR_LOOKOUT_ANGLE:ACTOR_LOOKOUT_ANGLE;
if( (mstate_rl&mcLLookout) && (mstate_rl&mcRLookout) )
tgt_roll = 0.0f;
}
if (!fsimilar(tgt_roll,r_torso_tgt_roll,EPS)){
angle_lerp (r_torso_tgt_roll,tgt_roll,PI_MUL_2,dt);
r_torso_tgt_roll= angle_normalize_signed(r_torso_tgt_roll);
}
}
示例6: g_cl_CheckControls
//.........这里部分代码省略.........
u32 move = mcAnyMove|mcAccel;
if (((mstate_real&mcCrouch)))
{
if (!isActorAccelerated(mstate_real, IsZoomAimingMode()) && isActorAccelerated(mstate_wf, IsZoomAimingMode()))
{
character_physics_support()->movement()->EnableCharacter();
if(!character_physics_support()->movement()->ActivateBoxDynamic(1))move &=~mcAccel;
}
if (isActorAccelerated(mstate_real, IsZoomAimingMode()) && !isActorAccelerated(mstate_wf, IsZoomAimingMode()))
{
character_physics_support()->movement()->EnableCharacter();
if(character_physics_support()->movement()->ActivateBoxDynamic(2))mstate_real &=~mcAccel;
}
}
if ((mstate_wf&mcSprint) && !CanSprint())
{
mstate_wf &= ~mcSprint;
}
mstate_real &= (~move);
mstate_real |= (mstate_wf & move);
if(mstate_wf&mcSprint)
mstate_real|=mcSprint;
else
mstate_real&=~mcSprint;
if(!(mstate_real&(mcFwd|mcLStrafe|mcRStrafe))||mstate_real&(mcCrouch|mcClimb)|| !isActorAccelerated(mstate_wf, IsZoomAimingMode()))
{
mstate_real&=~mcSprint;
mstate_wishful&=~mcSprint;
}
// check player move state
if (mstate_real&mcAnyMove)
{
BOOL bAccelerated = isActorAccelerated(mstate_real, IsZoomAimingMode())&&CanAccelerate();
// correct "mstate_real" if opposite keys pressed
if (_abs(vControlAccel.z)<EPS) mstate_real &= ~(mcFwd+mcBack );
if (_abs(vControlAccel.x)<EPS) mstate_real &= ~(mcLStrafe+mcRStrafe);
// normalize and analyze crouch and run
float scale = vControlAccel.magnitude();
if (scale>EPS) {
scale = m_fWalkAccel/scale;
if (bAccelerated)
if (mstate_real&mcBack)
scale *= m_fRunBackFactor;
else
scale *= m_fRunFactor;
else
if (mstate_real&mcBack)
scale *= m_fWalkBackFactor;
if (mstate_real&mcCrouch) scale *= m_fCrouchFactor;
if (mstate_real&mcClimb) scale *= m_fClimbFactor;
if (mstate_real&mcSprint) scale *= m_fSprintFactor;
if (mstate_real&(mcLStrafe|mcRStrafe) && !(mstate_real&mcCrouch))
{
if (bAccelerated)
scale *= m_fRun_StrafeFactor;
else
scale *= m_fWalk_StrafeFactor;
}
vControlAccel.mul (scale);
}else{
// mstate_real &= ~mcAnyMove;
}
}
}else{
// mstate_real &=~ mcAnyMove;
}
//-------------------------------------------------------------------------------
//transform local dir to world dir
Fmatrix mOrient;
mOrient.rotateY (-r_model_yaw);
mOrient.transform_dir(vControlAccel);
//XFORM().transform_dir(vControlAccel);
/*
if(mstate_real&mcClimb&&mstate_real&mcAnyMove&&
inventory().ActiveItem()&&inventory().ActiveItem()->HandDependence()==hd2Hand)
{
//inventory().ActiveItem()->Deactivate();
inventory().Activate(NO_ACTIVE_SLOT);
}
*/
}
示例7: NoClipFly
void CActor::NoClipFly(int cmd)
{
Fvector cur_pos;// = Position();
cur_pos.set(0,0,0);
float scale = 1.0f;
if(pInput->iGetAsyncKeyState(DIK_LSHIFT))
scale = 0.25f;
else if(pInput->iGetAsyncKeyState(DIK_LMENU))
scale = 4.0f;
switch(cmd)
{
case kJUMP:
cur_pos.y += 0.1f;
break;
case kCROUCH:
cur_pos.y -= 0.1f;
break;
case kFWD:
cur_pos.z += 0.1f;
break;
case kBACK:
cur_pos.z -= 0.1f;
break;
case kL_STRAFE:
cur_pos.x -= 0.1f;
break;
case kR_STRAFE:
cur_pos.x += 0.1f;
break;
case kCAM_1:
cam_Set(eacFirstEye);
break;
case kCAM_2:
cam_Set(eacLookAt);
break;
case kCAM_3:
cam_Set(eacFreeLook);
break;
case kNIGHT_VISION:
SwitchNightVision();
break;
case kTORCH:
SwitchTorch();
break;
case kDETECTOR:
{
PIItem det_active = inventory().ItemFromSlot(DETECTOR_SLOT);
if(det_active)
{
CCustomDetector* det = smart_cast<CCustomDetector*>(det_active);
det->ToggleDetector(g_player_hud->attached_item(0)!=NULL);
return;
}
}
break;
case kUSE:
ActorUse();
break;
}
cur_pos.mul(scale);
Fmatrix mOrient;
mOrient.rotateY(-(cam_Active()->GetWorldYaw()));
mOrient.transform_dir(cur_pos);
Position().add(cur_pos);
character_physics_support()->movement()->SetPosition(Position());
}
示例8:
void CCarWeapon::BoneCallbackY (CBoneInstance *B)
{
CCarWeapon *P = static_cast<CCarWeapon*>(B->Callback_Param);
Fmatrix rY; rY.rotateY (P->m_cur_y_rot);
B->mTransform.mulB_43 (rY);
}
示例9: g_cl_CheckControls
//.........这里部分代码省略.........
if(!(mstate_real&(mcFwd|mcLStrafe|mcRStrafe))||mstate_real&(mcCrouch|mcClimb)|| !isActorAccelerated(mstate_wf, IsZoomAimingMode()))
{
mstate_real&=~mcSprint;
mstate_wishful&=~mcSprint;
}
// check player move state
if(mstate_real&mcAnyMove)
{
BOOL bAccelerated = isActorAccelerated(mstate_real, IsZoomAimingMode())&&CanAccelerate();
// correct "mstate_real" if opposite keys pressed
if (_abs(vControlAccel.z)<EPS) mstate_real &= ~(mcFwd+mcBack );
if (_abs(vControlAccel.x)<EPS) mstate_real &= ~(mcLStrafe+mcRStrafe);
// normalize and analyze crouch and run
float scale = vControlAccel.magnitude();
if(scale>EPS)
{
scale = m_fWalkAccel/scale;
if (bAccelerated)
if (mstate_real&mcBack)
scale *= m_fRunBackFactor;
else
scale *= m_fRunFactor;
else
if (mstate_real&mcBack)
scale *= m_fWalkBackFactor;
if (mstate_real&mcCrouch) scale *= m_fCrouchFactor;
if (mstate_real&mcClimb) scale *= m_fClimbFactor;
if (mstate_real&mcSprint) scale *= m_fSprintFactor;
if (mstate_real&(mcLStrafe|mcRStrafe) && !(mstate_real&mcCrouch))
{
if (bAccelerated)
scale *= m_fRun_StrafeFactor;
else
scale *= m_fWalk_StrafeFactor;
}
vControlAccel.mul (scale);
cam_eff_factor = scale;
}//scale>EPS
}//(mstate_real&mcAnyMove)
}//peOnGround || peAtWall
if(IsGameTypeSingle() && cam_eff_factor>EPS)
{
LPCSTR state_anm = NULL;
if(mstate_real&mcSprint && !(mstate_old&mcSprint) )
state_anm = "sprint";
else
if(mstate_real&mcLStrafe && !(mstate_old&mcLStrafe) )
state_anm = "strafe_left";
else
if(mstate_real&mcRStrafe && !(mstate_old&mcRStrafe) )
state_anm = "strafe_right";
else
if(mstate_real&mcFwd && !(mstate_old&mcFwd) )
state_anm = "move_fwd";
else
if(mstate_real&mcBack && !(mstate_old&mcBack) )
state_anm = "move_back";
if(state_anm)
{ //play moving cam effect
CActor* control_entity = static_cast_checked<CActor*>(Level().CurrentControlEntity());
R_ASSERT2 (control_entity, "current control entity is NULL");
CEffectorCam* ec = control_entity->Cameras().GetCamEffector(eCEActorMoving);
if(NULL==ec)
{
string_path eff_name;
xr_sprintf (eff_name, sizeof(eff_name), "%s.anm", state_anm);
string_path ce_path;
string_path anm_name;
strconcat (sizeof(anm_name), anm_name, "camera_effects\\actor_move\\", eff_name);
if (FS.exist( ce_path, "$game_anims$", anm_name))
{
CAnimatorCamLerpEffectorConst* e = xr_new<CAnimatorCamLerpEffectorConst>();
float max_scale = 70.0f;
float factor = cam_eff_factor/max_scale;
e->SetFactor (factor);
e->SetType (eCEActorMoving);
e->SetHudAffect (false);
e->SetCyclic (false);
e->Start (anm_name);
control_entity->Cameras().AddCamEffector(e);
}
}
}
}
//transform local dir to world dir
Fmatrix mOrient;
mOrient.rotateY (-r_model_yaw);
mOrient.transform_dir(vControlAccel);
}