当前位置: 首页>>代码示例>>C++>>正文


C++ Terrain::FixCollindingNode方法代码示例

本文整理汇总了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);
}
开发者ID:mathieumg,项目名称:hockedu,代码行数:40,代码来源:VisiteurModifierProprieteNoeud.cpp

示例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");
		}
	}
}
开发者ID:mathieumg,项目名称:hockedu,代码行数:38,代码来源:VisiteurModifierProprieteNoeud.cpp


注:本文中的Terrain::FixCollindingNode方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。