本文整理汇总了C#中TgcViewer.Utils.TgcGeometry.TgcBoundingBox.clone方法的典型用法代码示例。如果您正苦于以下问题:C# TgcBoundingBox.clone方法的具体用法?C# TgcBoundingBox.clone怎么用?C# TgcBoundingBox.clone使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TgcViewer.Utils.TgcGeometry.TgcBoundingBox
的用法示例。
在下文中一共展示了TgcBoundingBox.clone方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: clonarBoundingBoxArbol
private TgcBoundingBox clonarBoundingBoxArbol(TgcBoundingBox bb)
{
TgcBoundingBox bbClon = bb.clone();
Vector3 pos = bb.calculateBoxCenter();
pos.Y = 0f;
pos.Z -= 40f;
pos.X -= 30f;
bbClon.scaleTranslate(pos, new Vector3(0.3f, 1f, 0.3f));
return bbClon;
}
示例2: colisionar
public bool colisionar(TgcBoundingBox objeto,List<Vector3> centros)
{
if (objeto.Position.Y - (centros[0].Y + escalaY ) - tolerancia > EPSILON)
{//si esta lejos en el eje y, no tiene sentido testear lo demas.
objeto.setRenderColor(Color.Yellow);
return false;
}
objeto.setRenderColor(Color.Red);
centros_probables.Clear();
if (objeto.Position.Y < 0) { return true; } //Si el avion avanza demasiado rápido y no se llega a checkear la colisión
foreach (Vector3 centro in centros)
{
if((Math.Pow(objeto.Position.X - centro.X, 2) + Math.Pow(objeto.Position.Z - centro.Z,2)) - Math.Pow(tamanio_terrenos/2,2) < EPSILON)
{//si el centro esta cerca en altura, y en horizontal lo guardo para colisionar
centros_probables.Add(centro);
}
}
//veo si colisionan los terrenos
Vector3 nuevaPosicion;
List<Vector3> verticesEnEsfera = new List<Vector3>();
TgcBoundingBox bounding = objeto.clone();
foreach (Vector3 centro in centros_probables)
{
//desplazo el avion en vez del terreno para testear colisiones
nuevaPosicion = Vector3.Subtract(objeto.Position,centro);
bounding.move(Vector3.Multiply(centro,-1f));
verticesEnEsfera.Clear();
TgcBoundingSphere esfera = new TgcBoundingSphere(nuevaPosicion,tolerancia);
Vector3 colision = new Vector3();
for (int i = 0; i < verticesTerreno.Length; i += 3)
{
if (TgcCollisionUtils.testSphereTriangle(esfera, verticesTerreno[i].Position, verticesTerreno[i + 1].Position, verticesTerreno[i + 2].Position,out colision))
{
if (TgcCollisionUtils.testTriangleAABB( verticesTerreno[i].Position, verticesTerreno[i + 1].Position, verticesTerreno[i + 2].Position,bounding))
{
return true;
}
}
}
/*
foreach (CustomVertex.PositionTextured vertice in verticesTerreno)
{
if ( Vector3.LengthSq(Vector3.Subtract(nuevaPosicion,vertice.Position)) - toleranciaSQ < EPSILON)
{
verticesEnEsfera.Add(vertice.Position);
}
}
foreach (Vector3 vertice in verticesEnEsfera)
{
if (TgcCollisionUtils.sqDistPointAABB(vertice, bounding) < EPSILON)
{
return true;
}
}*/
}
return false;
}