本文整理汇总了C++中CEntity::Position方法的典型用法代码示例。如果您正苦于以下问题:C++ CEntity::Position方法的具体用法?C++ CEntity::Position怎么用?C++ CEntity::Position使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CEntity
的用法示例。
在下文中一共展示了CEntity::Position方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: RenderSceneText
// Render on-screen text each frame
void RenderSceneText( float updateTime )
{
// Write FPS text string
stringstream outText;
outText << "Frame Time: " << updateTime * 1000.0f << "ms" << endl << "FPS:" << 1.0f / updateTime;
RenderText( outText.str(), 0, 0, 1.0f, 1.0f, 0.0f );
outText.str("");
//Render tank names
CEntity* Tank;
TInt32 RenderTextX;
TInt32 RenderTextY;
for (int TankIndex = 0; TankIndex < TankVector.size(); TankIndex++)
{
if (EntityManager.GetEntity(TankVector.at(TankIndex))!=0)
{
Tank = EntityManager.GetEntity(TankVector.at(TankIndex));
MainCamera->PixelFromWorldPt(Tank->Position(),ViewportWidth,ViewportHeight,&RenderTextX,&RenderTextY);
RenderText(Tank->GetInfo(ShowTankDetail),RenderTextX,RenderTextY,1.0f,1.0f,1.0f, true);
}
}
}
示例2:
bool operator() (const CEntity *pE1, const CEntity *pE2) const
{
return (pE1->Position().distance_to(enemy->Position()) >
pE2->Position().distance_to(enemy->Position()));
};
示例3: Attack_AssignTargetDir
void CMonsterSquad::Attack_AssignTargetDir(ENTITY_VEC &members, const CEntity *enemy)
{
_elem first;
_elem last;
lines.clear();
// сортировать по убыванию расстояния от npc до врага
std::sort(members.begin(), members.end(), sort_predicate(enemy));
if (members.empty()) return;
float delta_yaw = PI_MUL_2 / members.size();
// обработать ближний элемент
first.pE = members.back();
first.p_from = first.pE->Position();
first.yaw = 0;
members.pop_back();
lines.push_back(first);
// обработать дальний элемент
if (!members.empty()) {
last.pE = members[0];
last.p_from = last.pE->Position();
last.yaw = PI;
members.erase (members.begin());
lines.push_back(last);
}
Fvector target_pos = enemy->Position();
float next_right_yaw = delta_yaw;
float next_left_yaw = delta_yaw;
// проходим с конца members в начало (начиная с наименьшего расстояния)
while (!members.empty()) {
CEntity *pCur;
pCur = members.back();
members.pop_back();
_elem cur_line;
cur_line.p_from = pCur->Position();
cur_line.pE = pCur;
// определить cur_line.yaw
float h1,p1,h2,p2;
Fvector dir;
dir.sub(target_pos, first.p_from);
dir.getHP(h1,p1);
dir.sub(target_pos, cur_line.p_from);
dir.getHP(h2,p2);
bool b_add_left = false;
if (angle_normalize_signed(h2 - h1) > 0) { // right
if ((next_right_yaw < PI) && !fsimilar(next_right_yaw, PI, PI/60.f)) b_add_left = false;
else b_add_left = true;
} else { // left
if ((next_left_yaw < PI) && !fsimilar(next_left_yaw, PI, PI/60.f)) b_add_left = true;
else b_add_left = false;
}
if (b_add_left) {
cur_line.yaw = -next_left_yaw;
next_left_yaw += delta_yaw;
} else {
cur_line.yaw = next_right_yaw;
next_right_yaw += delta_yaw;
}
lines.push_back(cur_line);
}
// Пройти по всем линиям и заполнить таргеты у npc
float first_h, first_p;
Fvector d; d.sub(target_pos,first.p_from);
d.getHP(first_h, first_p);
for (u32 i = 0; i < lines.size(); i++){
SSquadCommand command;
command.type = SC_ATTACK;
command.entity = enemy;
command.direction.setHP (first_h + lines[i].yaw, first_p);
UpdateCommand(lines[i].pE, command);
}
}