本文整理汇总了C++中IPersistantDebug::Add2DText方法的典型用法代码示例。如果您正苦于以下问题:C++ IPersistantDebug::Add2DText方法的具体用法?C++ IPersistantDebug::Add2DText怎么用?C++ IPersistantDebug::Add2DText使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IPersistantDebug
的用法示例。
在下文中一共展示了IPersistantDebug::Add2DText方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ColorF
//-------------------------------------------------------------------------
int CScriptBind_Action::Persistant2DText(IFunctionHandler* pH, const char* text, float size, Vec3 color, const char* name, float timeout)
{
IPersistantDebug* pPD = CCryAction::GetCryAction()->GetIPersistantDebug();
pPD->Begin(name, false);
pPD->Add2DText(text, size, ColorF(color, 1.f), timeout);
return pH->EndFunction();
}
示例2: GetCollisionEnergy
//------------------------------------------------------------------------
float CGameRulesCommonDamageHandling::GetCollisionEnergy( const IEntity *pVictim, const CGameRules::SCollisionHitInfo& colHitInfo ) const
{
float m1 = colHitInfo.target_mass;
float m0 = 0.f;
IPhysicalEntity *phys = pVictim->GetPhysics();
if(phys)
{
pe_status_dynamics dyn;
phys->GetStatus(&dyn);
m0 = dyn.mass;
}
IEntity *pOffender = gEnv->pEntitySystem->GetEntity(colHitInfo.targetId);
bool bCollider = (pOffender || m1 > 0.001f);
const bool debugColl = DebugCollisions();
if (debugColl)
{
CryLog("GetCollisionEnergy %s (%.1f) <-> %s (%.1f)", pVictim?pVictim->GetName():"[no entity]", m0, pOffender?pOffender->GetName():"[no entity]", m1);
}
float v0Sq = 0.f, v1Sq = 0.f;
if (bCollider) // non-static
{
m0 = min(m0, m1);
Vec3 v0normal, v1normal, vrel;
Vec3 tempNormal = colHitInfo.normal;
float v0dotN = colHitInfo.velocity.dot(colHitInfo.normal);
v0normal = tempNormal.scale(v0dotN);
float v1dotN = colHitInfo.target_velocity.dot(colHitInfo.normal);; // "target" is the offender
v1normal = tempNormal.scale(v1dotN);
vrel = v0normal.sub(v1normal);
float vrelSq = vrel.len2();
v0Sq = min( sqr(v0dotN), vrelSq );
v1Sq = min( sqr(v1dotN), vrelSq );
if (debugColl)
{
IPersistantDebug* pPD = g_pGame->GetIGameFramework()->GetIPersistantDebug();
pPD->Begin("CollDamage", false);
pPD->AddSphere(colHitInfo.pos, 0.15f, Col_Red, 5.f);
pPD->AddDirection(colHitInfo.pos, 1.5f, tempNormal.scale(sgn(v0dotN)), Col_Green, 5.f);
pPD->AddDirection(colHitInfo.pos, 1.5f, tempNormal.scale(sgn(v1dotN)), Col_Red, 5.f);
if ((v0Sq > 2*2) || (v1Sq > 2*2))
{
CryLog("normal velocities: rel %.1f, <%s> %.1f / <%s> %.1f", sqrt(vrelSq), pVictim?pVictim->GetName():"none", v0dotN, pOffender?pOffender->GetName():"none", v1dotN);
CryLog("target_type: %i, target_velocity: %.2f %.2f %.2f", colHitInfo.target_type, colHitInfo.target_velocity.x, colHitInfo.target_velocity.y, colHitInfo.target_velocity.z);
}
}
}
else
{
v0Sq = sqr(colHitInfo.velocity.dot(colHitInfo.normal));
if (debugColl && v0Sq>5*5)
{
IPersistantDebug* pPD = g_pGame->GetIGameFramework()->GetIPersistantDebug();
pPD->Begin("CollDamage", false);
pPD->AddDirection(colHitInfo.pos, 1.5f, colHitInfo.normal, Col_Green, 5.f);
string debugText;
debugText.Format("z: %f", colHitInfo.velocity.z);
pPD->Add2DText(debugText.c_str(), 1.5f, Col_White, 5.f);
}
}
float colliderEnergyScale = 1.f;
if (pVictim != NULL && pOffender != NULL)
{
if(IActor* pVictimActor = g_pGame->GetIGameFramework()->GetIActorSystem()->GetActor(pVictim->GetId()))
{
colliderEnergyScale = !pVictimActor->IsPlayer() ? GetAIPlayerAgainstColliderEnergyScale(*pOffender) :
GetPlayerAgainstColliderEnergyScale(*pOffender);
if (debugColl)
{
CryLog("colliderEnergyScale: %.1f", colliderEnergyScale);
}
}
}
const float energy0 = 0.5f * m0 * v0Sq;
const float energy1 = 0.5f * m1 * v1Sq * colliderEnergyScale;
return energy0 + energy1;
}