本文整理汇总了C++中CItem::GetParams方法的典型用法代码示例。如果您正苦于以下问题:C++ CItem::GetParams方法的具体用法?C++ CItem::GetParams怎么用?C++ CItem::GetParams使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CItem
的用法示例。
在下文中一共展示了CItem::GetParams方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnEnter
void CMountedGunController::OnEnter(EntityId mountedGunId)
{
CRY_ASSERT_MESSAGE(m_pControlledPlayer, "Controlled player not initialized");
ICharacterInstance* pCharacter = m_pControlledPlayer->IsThirdPerson() ? m_pControlledPlayer->GetEntity()->GetCharacter(0) : m_pControlledPlayer->GetShadowCharacter();
if (pCharacter)
{
CItem* pWeapon = static_cast<CItem*>(g_pGame->GetIGameFramework()->GetIItemSystem()->GetItem(mountedGunId));
assert(pWeapon);
IActionController* pActionController = m_pControlledPlayer->GetAnimatedCharacter()->GetActionController();
if (pActionController && m_pMannequinParams)
{
SAFE_RELEASE(m_pMovementAction);
m_pMovementAction = new TPlayerAction(PP_PlayerAction, m_pMannequinParams->fragmentIDs.MotionMounted);
m_pMovementAction->AddRef();
pActionController->Queue(m_pMovementAction);
}
//////////////////////////////////////////////////////////////////////////
// NOTE: This should go through mannequin
CRecordingSystem* pRecordingSystem = g_pGame->GetRecordingSystem();
if (pRecordingSystem)
{
const SParams& pWeaponParams = pWeapon->GetParams();
IAnimationSet* pAnimationSet = pCharacter->GetIAnimationSet();
const int upAnimId = pAnimationSet->GetAnimIDByName(pWeaponParams.mountedTPAimAnims[MountedTPAimAnim::Up].c_str());
const int downAnimId = pAnimationSet->GetAnimIDByName(pWeaponParams.mountedTPAimAnims[MountedTPAimAnim::Down].c_str());
pRecordingSystem->OnMountedGunEnter(m_pControlledPlayer, upAnimId, downAnimId);
}
//////////////////////////////////////////////////////////////////////////
IAnimatedCharacter* pAnimatedCharacter = m_pControlledPlayer->GetAnimatedCharacter();
CRY_ASSERT(pAnimatedCharacter);
pAnimatedCharacter->RequestPhysicalColliderMode(eColliderMode_Disabled, eColliderModeLayer_Game, "CMountedGunController::OnEnter");
pAnimatedCharacter->SetNoMovementOverride(true);
if (gEnv->bMultiplayer)
pAnimatedCharacter->EnableRigidCollider(0.5f);
else if (m_pControlledPlayer->IsPlayer())
pAnimatedCharacter->EnableRigidCollider(1.5f);
pAnimatedCharacter->GetGroundAlignmentParams().SetFlag(eGA_AllowWithNoCollision, true);
BATTLECHATTER(BC_WatchMyBack, m_pControlledPlayer->GetEntityId());
}
}
示例2: OnActionProne
bool CPlayerInput::OnActionProne(EntityId entityId, const ActionId& actionId, int activationMode, float value)
{
//No prone if holding something
COffHand* pOffHand = static_cast<COffHand*>(m_pPlayer->GetWeaponByClass(CItem::sOffHandClass));
if(pOffHand && pOffHand->IsHoldingEntity())
return false;
if (!m_pPlayer->m_stats.spectatorMode)
{
if(!m_pPlayer->GetActorStats()->inZeroG)
{
if(activationMode == eAAM_OnPress)
{
CItem *curItem = static_cast<CItem*>(gEnv->pGame->GetIGameFramework()->GetIItemSystem()->GetItem(m_pPlayer->GetInventory()->GetCurrentItem()));
if(curItem && curItem->GetParams().prone_not_usable)
{
// go crouched instead.
// Nope, actually do nothing
// if (!(m_actions & ACTION_CROUCH))
// m_actions |= ACTION_CROUCH;
// else
// m_actions &= ~ACTION_CROUCH;
}
else
{
if (!(m_actions & ACTION_PRONE))
{
if(!m_pPlayer->GetActorStats()->inAir)
m_actions |= ACTION_PRONE;
}
else
m_actions &= ~ACTION_PRONE;
}
}
}
}
return false;
}
示例3: GetStanceAngleLimits
void CPlayerRotation::GetStanceAngleLimits(float &minAngle,float &maxAngle)
{
EStance stance = m_player.GetStance();
switch(stance)
{
default:
case STANCE_CROUCH:
case STANCE_STAND:
minAngle = -80.0f;
maxAngle = 80.0f;
break;
case STANCE_PRONE:
minAngle = -35.0f;
maxAngle = 45.0f;
break;
}
//Limit camera rotation on ladders(to prevent clipping)
if(m_player.m_stats.isOnLadder)
{
minAngle = -40.0f;
maxAngle = 80.0f;
}
if(m_stats.grabbedHeavyEntity!=0)
{
minAngle = -35.0f; //Limit angle to prevent clipping, throw objects at feet, etc...
}
// SNH: additional restriction based on weapon type if prone.
if(m_player.GetStance() == STANCE_PRONE && g_pGameCVars->g_proneAimAngleRestrict_Enable != 0)
{
float dist = 0.0f;
CItem *pItem = (CItem *)(m_player.GetCurrentItem());
if(pItem)
dist = pItem->GetParams().raise_distance;
SMovementState movestate;
m_player.m_pMovementController->GetMovementState(movestate);
// try a cylinder intersection test
IPhysicalEntity *pIgnore[2];
pIgnore[0] = m_player.GetEntity()->GetPhysics();
pIgnore[1] = pItem ? pItem->GetEntity()->GetPhysics() : NULL;
primitives::cylinder cyl;
cyl.r = 0.05f;
cyl.axis = movestate.aimDirection;
cyl.hh = dist;
cyl.center = movestate.weaponPosition + movestate.aimDirection*cyl.hh;
//gEnv->pRenderer->GetIRenderAuxGeom()->DrawCylinder(cyl.center, cyl.axis, cyl.r, cyl.hh, ColorF(0.4f,1.0f,0.6f, 0.2f));
float n = 0.0f;
geom_contact *contacts;
intersection_params params;
WriteLockCond lockContacts;
params.bStopAtFirstTri = false;
params.bSweepTest = false;
params.bNoBorder = true;
params.bNoAreaContacts = true;
n = gEnv->pPhysicalWorld->PrimitiveWorldIntersection(primitives::cylinder::type, &cyl, Vec3(0,0,2),
ent_static|ent_terrain, &contacts, 0,
geom_colltype_player, ¶ms, 0, 0, pIgnore, pIgnore[1]?2:1), lockContacts;
int ret = (int)n;
geom_contact *currentc = contacts;
for(int i=0; i<ret; i++)
{
geom_contact *contact = currentc;
if(contact && (fabs_tpl(contact->n.z)>0.2f))
{
Vec3 dir = contact->pt - movestate.weaponPosition;
dir.NormalizeSafe();
Vec3 horiz = dir;
horiz.z = 0.0f;
horiz.NormalizeSafe();
float cosangle = dir.Dot(horiz);
Limit(cosangle, -1.0f, 1.0f);
float newMin = acos_tpl(cosangle);
newMin = -newMin * 180.0f / gf_PI;
//float col[] = {1,1,1,1};
//gEnv->pRenderer->Draw2dLabel(100,100, 1.0f, col, false, "minangle: %.2f", newMin);
//gEnv->pRenderer->GetIRenderAuxGeom()->DrawSphere(contact->pt, 0.03f, ColorF(1,0,0,1));
minAngle = MAX(newMin, minAngle);
}
++currentc;
}
}
minAngle *= gf_PI/180.0f;
maxAngle *= gf_PI/180.0f;
}
示例4: UpdateScopeContexts
void CReplayActor::UpdateScopeContexts()
{
if (m_pActionController)
{
//--- Update variable scope contexts
CItem *pItem = static_cast<CItem*>(g_pGame->GetIGameFramework()->GetIItemSystem()->GetItem(m_gunId));
ICharacterInstance *pICharInst = (m_flags & eRAF_FirstPerson) && pItem ? pItem->GetEntity()->GetCharacter(0) : NULL;
IMannequin &mannequinSys = gEnv->pGame->GetIGameFramework()->GetMannequinInterface();
const int contextID = PlayerMannequin.contextIDs.Weapon;
if (contextID >= 0)
{
const uint32 numScopes = m_pActionController->GetContext().controllerDef.m_scopeDef.size();
ICharacterInstance *scopeCharInst = NULL;
for (uint32 s=0; s<numScopes; s++)
{
if (m_pActionController->GetContext().controllerDef.m_scopeDef[s].context == contextID)
{
scopeCharInst = m_pActionController->GetScope(s)->GetCharInst();
break;
}
}
if (scopeCharInst != pICharInst)
{
if (pICharInst)
{
const SParams& weaponParams = pItem->GetParams();
const IAnimationDatabase *animDB = !weaponParams.adbFile.empty() ? mannequinSys.GetAnimationDatabaseManager().Load(weaponParams.adbFile.c_str()) : NULL;
if (animDB)
{
m_pActionController->SetScopeContext(contextID, *pItem->GetEntity(), pICharInst, animDB);
}
else
{
m_pActionController->ClearScopeContext(contextID, false);
}
}
else
{
m_pActionController->ClearScopeContext(contextID, false);
}
}
}
const uint32 NUM_ACCESSORY_SLOTS = 2;
uint32 ACCESSORY_CONTEXT_IDS[NUM_ACCESSORY_SLOTS] = {PlayerMannequin.contextIDs.attachment_top, PlayerMannequin.contextIDs.attachment_bottom};
for (uint32 attachmentSlot=0; attachmentSlot<NUM_ACCESSORY_SLOTS; attachmentSlot++)
{
const int attachmentContextID = ACCESSORY_CONTEXT_IDS[attachmentSlot];
ICharacterInstance *scopeCharInst = NULL;
ICharacterInstance *accessoryCharInst = NULL;
CItem *accessory = NULL;
const char *contextName = m_pActionController->GetContext().controllerDef.m_scopeContexts.GetTagName(attachmentContextID);
const uint32 numScopes = m_pActionController->GetContext().controllerDef.m_scopeDef.size();
for (uint32 s=0; s<numScopes; s++)
{
if (m_pActionController->GetContext().controllerDef.m_scopeDef[s].context == attachmentContextID)
{
scopeCharInst = m_pActionController->GetScope(s)->GetCharInst();
break;
}
}
if (pItem)
{
//--- Find attachments
const CItem::TAccessoryArray &accessories = pItem->GetAccessories();
for (CItem::TAccessoryArray::const_iterator iter=accessories.begin(); iter != accessories.end(); ++iter)
{
const CItem::SAccessoryInfo &accessoryInfo = *iter;
const SAccessoryParams *aparams = pItem->GetAccessoryParams(accessoryInfo.pClass);
if (strcmp(aparams->attach_helper.c_str(), contextName) == 0)
{
//--- Found a match
accessory = pItem->GetAccessory(accessoryInfo.pClass);
accessoryCharInst = accessory->GetEntity()->GetCharacter(0);
break;
}
}
}
if (scopeCharInst != accessoryCharInst)
{
if (accessoryCharInst && !accessory->GetParams().adbFile.empty())
{
const IAnimationDatabase *animDB = mannequinSys.GetAnimationDatabaseManager().Load(accessory->GetParams().adbFile.c_str());
if (animDB)
{
m_pActionController->SetScopeContext(attachmentContextID, *pItem->GetEntity(), accessoryCharInst, animDB);
}
}
else
{
m_pActionController->ClearScopeContext(attachmentContextID, false);
}
}
}
}
//.........这里部分代码省略.........