本文整理汇总了C++中Terrain::FixCollindingNode方法的典型用法代码示例。如果您正苦于以下问题:C++ Terrain::FixCollindingNode方法的具体用法?C++ Terrain::FixCollindingNode怎么用?C++ Terrain::FixCollindingNode使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Terrain
的用法示例。
在下文中一共展示了Terrain::FixCollindingNode方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: visiterNoeudMuret
////////////////////////////////////////////////////////////////////////
///
/// @fn void VisiteurModifierProprieteNoeud::visiterNoeudMuret( NodeWallAbstract* noeud )
///
/// Visiteur du noeud muret.
///
/// @param[in] NodeWallAbstract * noeud : noeud a visiter.
///
/// @return void
///
////////////////////////////////////////////////////////////////////////
void VisiteurModifierProprieteNoeud::visiterNoeudMuret( NodeWallAbstract* noeud )
{
/// On applique le nouveau coefficient de rebond
if(noeud->IsSelected())
{
if(coefRebond_!=-1)
noeud->setReboundRatio(coefRebond_);
if(unSeulSelect_)
{
const Vecteur3& oldPos = noeud->getPosition();
noeud->setPosition(position_);
float oldAngle = noeud->getAngle();
noeud->setAngle((float)rotation_);
Vecteur3 oldEchelle; noeud->getScale(oldEchelle);
noeud->setScale(Vecteur3(echelle_*10, oldEchelle[VY], oldEchelle[VZ]));
Terrain* field = noeud->getField();
// Si on arrive pas à assigner les nouvelles positions on annule les modifications et l'indique à l'usager
if(!field || !field->FixCollindingNode(noeud,20))
{
noeud->setPosition(oldPos);
noeud->setAngle(oldAngle);
noeud->setScale(oldEchelle);
utilitaire::afficherErreur("Nouvelles propriétés du Muret ne sont pas valides");
}
}
}
visiterNoeudComposite(noeud);
}
示例2: visiterNoeudNeutre
void VisiteurModifierProprieteNoeud::visiterNoeudNeutre( NoeudAbstrait* noeud )
{
if(unSeulSelect_ && noeud->IsSelected())
{
/// On fait le deplacement contenu dans position_ par rapport à l'origine
/*Vecteur3 deplacement = ((position_.convertir<3>())-(noeud->getPosition()));
VisiteurDeplacement visiteurDeplacement(deplacement,true);
noeud->acceptVisitor(visiteurDeplacement);*/
const Vecteur3& oldPos = noeud->getPosition();
noeud->setPosition(position_);
float oldAngle = noeud->getAngle();
/// On applique la nouvelle rotation
VisiteurRotation rotationAFaire((float)rotation_,position_);
noeud->acceptVisitor(rotationAFaire);
Vecteur3 oldEchelle; noeud->getScale(oldEchelle);
if(noeud->getKey() == RAZER_KEY_PORTAL)
noeud->setScale(Vecteur3(echelle_, echelle_, 1));
else
noeud->setScale(Vecteur3(echelle_, echelle_, echelle_));
noeud->updateMatrice();
Terrain* field = noeud->getField();
/// On regle les nouvelles collision créé
if(!field || !field->FixCollindingNode(noeud,20))
{
noeud->setPosition(oldPos);
noeud->setAngle(oldAngle);
noeud->setScale(oldEchelle);
noeud->updateMatrice();
utilitaire::afficherErreur("Nouvelles propriétés du noeud ne sont pas valides");
}
}
}