本文整理汇总了C++中CGameSettings::Gore方法的典型用法代码示例。如果您正苦于以下问题:C++ CGameSettings::Gore方法的具体用法?C++ CGameSettings::Gore怎么用?C++ CGameSettings::Gore使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CGameSettings
的用法示例。
在下文中一共展示了CGameSettings::Gore方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CreateHumanDeathFX
void CDeathFX::CreateHumanDeathFX()
{
CSFXMgr* psfxMgr = g_pGameClientShell->GetSFXMgr();
if (!psfxMgr) return;
CGameSettings* pSettings = g_pInterfaceMgr->GetSettings();
if (!pSettings || !pSettings->Gore()) return;
GIBCREATESTRUCT gib;
m_pClientDE->AlignRotation(&(gib.rRot), &m_vDir, LTNULL);
LTFLOAT fDamage = VEC_MAG(m_vDir);
VEC_COPY(gib.vPos, m_vPos);
VEC_SET(gib.vMinVel, 50.0f, 100.0f, 50.0f);
VEC_MULSCALAR(gib.vMinVel, gib.vMinVel, fDamage);
VEC_SET(gib.vMaxVel, 100.0f, 200.0f, 100.0f);
VEC_MULSCALAR(gib.vMaxVel, gib.vMaxVel, fDamage);
gib.fLifeTime = 20.0f;
gib.fFadeTime = 7.0f;
gib.nGibFlags = 0;
gib.bRotate = LTTRUE;
gib.nCode = m_eCode;
gib.eModelId = m_eModelId;
gib.eModelStyle = m_eModelStyle;
gib.bSubGibs = LTTRUE;
gib.bBloodSplats = LTTRUE;
SetupGibTypes(gib);
psfxMgr->CreateSFX(SFX_GIB_ID, &gib);
}
示例2: OnFocus
void CFolderGame::OnFocus(LTBOOL bFocus)
{
CGameSettings *pSettings = g_pInterfaceMgr->GetSettings();
if (bFocus)
{
m_bGore = pSettings->Gore();
m_nDifficulty = g_pGameClientShell->GetDifficulty();
m_bFadeBodies = g_pGameClientShell->GetFadeBodies();
m_nSubtitles = (int)g_vtSubtitles.GetFloat();
m_bAlwaysRun = pSettings->RunLock();
m_nLayout = (int)g_vtHUDLayout.GetFloat();
m_nHeadBob = (int)(10.0f * GetConsoleFloat("HeadBob",1.0f));
m_nWeaponSway = (int)(10.0f * GetConsoleFloat("WeaponSway",1.0f));
m_nPickupMsgDur = (int)(2.0f * GetConsoleFloat("PickupMessageDuration",5.0f));
m_bObjMessages = ( GetConsoleInt("ObjectiveMessages",1) > 0 );
UpdateData(LTFALSE);
}
else
{
UpdateData();
pSettings->SetBoolVar("Gore",m_bGore);
g_vtSubtitles.WriteFloat((LTFLOAT)m_nSubtitles);
g_vtHUDLayout.WriteFloat((LTFLOAT)m_nLayout);
WriteConsoleInt("Difficulty",m_nDifficulty);
g_pGameClientShell->SetDifficulty((GameDifficulty)m_nDifficulty);
WriteConsoleInt("FadeBodies",(int)m_bFadeBodies);
g_pGameClientShell->SetFadeBodies(m_bFadeBodies);
pSettings->SetBoolVar("RunLock",m_bAlwaysRun);
WriteConsoleFloat("HeadBob",((LTFLOAT)m_nHeadBob / 10.0f));
WriteConsoleFloat("WeaponSway",((LTFLOAT)m_nWeaponSway / 10.0f));
WriteConsoleFloat("PickupMessageDuration",((LTFLOAT)m_nPickupMsgDur / 2.0f));
WriteConsoleInt("ObjectiveMessages",m_bObjMessages);
g_pLTClient->WriteConfigFile("autoexec.cfg");
}
CBaseFolder::OnFocus(bFocus);
}
示例3: CreateSurfaceSpecificFX
void CWeaponFX::CreateSurfaceSpecificFX()
{
CGameSettings* pSettings = g_pInterfaceMgr->GetSettings();
if (!pSettings) return;
// Don't do gore fx...
if (m_eSurfaceType == ST_FLESH)
{
if (!pSettings->Gore())
{
return;
}
if (m_pAmmo->eType == VECTOR && m_pAmmo->eInstDamageType == DT_BULLET)
{
CreateBloodSplatFX();
}
}
if ((m_wFireFX & WFX_EXITMARK) && ShowsMark(m_eExitSurface))
{
CreateExitMark();
}
if (m_wFireFX & WFX_EXITDEBRIS)
{
CreateExitDebris();
}
if (!m_pAmmo || !m_pAmmo->pImpactFX) return;
if (!m_pAmmo->pImpactFX->bDoSurfaceFX) return;
// Create the surface specific fx...
int i;
SURFACE* pSurf = g_pSurfaceMgr->GetSurface(m_eSurfaceType);
if (pSurf)
{
if (IsLiquid(m_eCode))
{
// Create underwater fx...
// Create any impact particle shower fx associated with this surface...
for (i=0; i < pSurf->nNumUWImpactPShowerFX; i++)
{
CPShowerFX* pPShowerFX = g_pSurfaceMgr->GetPShowerFX(pSurf->aUWImpactPShowerFXIds[i]);
g_pFXButeMgr->CreatePShowerFX(pPShowerFX, m_vPos, m_vDir, m_vSurfaceNormal);
}
}
else
{
// Create normal fx...
// Create any impact scale fx associated with this surface...
for (i=0; i < pSurf->nNumImpactScaleFX; i++)
{
CScaleFX* pScaleFX = g_pSurfaceMgr->GetScaleFX(pSurf->aImpactScaleFXIds[i]);
g_pFXButeMgr->CreateScaleFX(pScaleFX, m_vPos, m_vDir, &m_vSurfaceNormal, &m_rSurfaceRot);
}
// Create any impact particle shower fx associated with this surface...
for (i=0; i < pSurf->nNumImpactPShowerFX; i++)
{
CPShowerFX* pPShowerFX = g_pSurfaceMgr->GetPShowerFX(pSurf->aImpactPShowerFXIds[i]);
g_pFXButeMgr->CreatePShowerFX(pPShowerFX, m_vPos, m_vDir, m_vSurfaceNormal);
}
// Create any impact poly debris fx associated with this surface...
if (g_vtCreatePolyDebris.GetFloat())
{
for (i=0; i < pSurf->nNumImpactPolyDebrisFX; i++)
{
CPolyDebrisFX* pPolyDebrisFX = g_pSurfaceMgr->GetPolyDebrisFX(pSurf->aImpactPolyDebrisFXIds[i]);
g_pFXButeMgr->CreatePolyDebrisFX(pPolyDebrisFX, m_vPos, m_vDir, m_vSurfaceNormal);
}
}
}
}
}
示例4: CreateBloodSplatFX
void CWeaponFX::CreateBloodSplatFX()
{
CGameSettings* pSettings = g_pInterfaceMgr->GetSettings();
if (!pSettings || !pSettings->Gore()) return;
CSFXMgr* psfxMgr = g_pGameClientShell->GetSFXMgr();
if (!psfxMgr) return;
CSpecialFX* pFX = LTNULL;
LTFLOAT fRange = g_vtBloodSplatsRange.GetFloat();
// See if we should make some blood splats...
ClientIntersectQuery iQuery;
IntersectInfo iInfo;
iQuery.m_From = m_vPos;
LTVector vDir = m_vDir;
// Create some blood splats...
int nNumSplats = GetRandom((int)g_vtBloodSplatsMinNum.GetFloat(), (int)g_vtBloodSplatsMaxNum.GetFloat());
LTVector vU, vR, vF;
g_pLTClient->GetRotationVectors(&m_rDirRot, &vU, &vR, &vF);
for (int i=0; i < nNumSplats; i++)
{
LTVector vDir = m_vDir;
// Perturb direction after first splat...
if (i > 0)
{
float fPerturb = g_vtBloodSplatsPerturb.GetFloat();
float fRPerturb = (GetRandom(-fPerturb, fPerturb))/1000.0f;
float fUPerturb = (GetRandom(-fPerturb, fPerturb))/1000.0f;
vDir += (vR * fRPerturb);
vDir += (vU * fUPerturb);
}
iQuery.m_To = vDir * fRange;
iQuery.m_To += m_vPos;
iQuery.m_Flags = IGNORE_NONSOLID | INTERSECT_HPOLY;
if (g_pLTClient->IntersectSegment(&iQuery, &iInfo) && IsMainWorld(iInfo.m_hObject))
{
SurfaceType eType = GetSurfaceType(iInfo);
if (eType == ST_SKY || eType == ST_INVISIBLE)
{
return; // Don't leave blood on the sky
}
LTBOOL bBigBlood = (LTBOOL)GetConsoleInt("BigBlood", 0);
// Create a blood splat...
BSCREATESTRUCT sc;
g_pLTClient->AlignRotation(&(sc.rRot), &(iInfo.m_Plane.m_Normal), LTNULL);
// Randomly rotate the blood splat
g_pLTClient->RotateAroundAxis(&(sc.rRot), &(iInfo.m_Plane.m_Normal), GetRandom(0.0f, MATH_CIRCLE));
LTVector vTemp = vDir * -2.0f;
sc.vPos = iInfo.m_Point + vTemp; // Off the wall a bit
sc.vVel.Init(0.0f, 0.0f, 0.0f);
sc.vInitialScale.Init(1.0f, 1.0f, 1.0f);
sc.vInitialScale.x = GetRandom(g_vtBloodSplatsMinScale.GetFloat(), g_vtBloodSplatsMaxScale.GetFloat());
if (bBigBlood) sc.vInitialScale.x *= g_vtBigBloodSizeScale.GetFloat();
sc.vInitialScale.y = sc.vInitialScale.x;
sc.vFinalScale = sc.vInitialScale;
sc.dwFlags = FLAG_VISIBLE | FLAG_ROTATEABLESPRITE | FLAG_NOLIGHT;
sc.fLifeTime = GetRandom(g_vtBloodSplatsMinLifetime.GetFloat(), g_vtBloodSplatsMaxLifetime.GetFloat());
if (bBigBlood) sc.fLifeTime *= g_vtBigBloodLifeScale.GetFloat();
sc.fInitialAlpha = 1.0f;
sc.fFinalAlpha = 0.0f;
sc.nType = OT_SPRITE;
sc.bMultiply = LTTRUE;
char* pBloodFiles[] =
{
"Sfx\\Test\\Spr\\BloodL1.spr",
"Sfx\\Test\\Spr\\BloodL2.spr",
"Sfx\\Test\\Spr\\BloodL3.spr",
"Sfx\\Test\\Spr\\BloodL4.spr"
};
//.........这里部分代码省略.........