public CaraBuilder CaraY() { var centroCaraY = HallarCentroDeCara("y"); var centroCaraMenosZ = HallarCentroDeCara("-z"); var centroCaraZ = HallarCentroDeCara("z"); var centroCaraX = HallarCentroDeCara("x"); var centroCaraMenosX = HallarCentroDeCara("-x"); // RAYOS MAS ALEJADOS, MENOS Z var rayoCaraY = new RayoY(new TGCVector3(centroCaraY.X, centroCaraY.Y, centroCaraMenosZ.Z), new TGCVector3(0, 1, 0)); var rayoIzqCaraY = new RayoY(new TGCVector3(mesh.BoundingBox().PMax.X, centroCaraY.Y, centroCaraMenosZ.Z), new TGCVector3(0, 1, 0)); var rayoDerCaraY = new RayoY(new TGCVector3(mesh.BoundingBox().PMin.X, centroCaraY.Y, centroCaraMenosZ.Z), new TGCVector3(0, 1, 0)); rayos.Add(rayoCaraY); rayos.Add(rayoIzqCaraY); rayos.Add(rayoDerCaraY); // RAYOS MAS CERCANOS, Z var rayoCaraYMasAdelante = new RayoY(new TGCVector3(centroCaraY.X, centroCaraY.Y, centroCaraZ.Z), new TGCVector3(0, 1, 0)); var rayoIzqCaraYMasAdelante = new RayoY(new TGCVector3(mesh.BoundingBox().PMax.X, centroCaraY.Y, centroCaraZ.Z), new TGCVector3(0, 1, 0)); var rayoDerCaraYMasAdelante = new RayoY(new TGCVector3(mesh.BoundingBox().PMin.X, centroCaraY.Y, centroCaraZ.Z), new TGCVector3(0, 1, 0)); rayos.Add(rayoCaraYMasAdelante); rayos.Add(rayoIzqCaraYMasAdelante); rayos.Add(rayoDerCaraYMasAdelante); // RAYOS DEL MEDIO var rayoCaraYMasAtras = new RayoY(new TGCVector3(centroCaraY.X, centroCaraY.Y, centroCaraX.Z), new TGCVector3(0, 1, 0)); var rayoIzqCaraYMasAtras = new RayoY(new TGCVector3(mesh.BoundingBox().PMax.X, centroCaraY.Y, centroCaraX.Z), new TGCVector3(0, 1, 0)); var rayoDerCaraYMasAtras = new RayoY(new TGCVector3(mesh.BoundingBox().PMin.X, centroCaraY.Y, centroCaraX.Z), new TGCVector3(0, 1, 0)); rayos.Add(rayoCaraYMasAtras); rayos.Add(rayoIzqCaraYMasAtras); rayos.Add(rayoDerCaraYMasAtras); // RAYOS DIAGONALES: var rayoCaraYAbajoIzq = new RayoY(new TGCVector3((centroCaraX.X + centroCaraY.X) / 2, centroCaraY.Y, (centroCaraZ.Z + centroCaraY.Z) / 2), new TGCVector3(0, 1, 0)); var rayoIzqCaraYAbajoDer = new RayoY(new TGCVector3((centroCaraY.X + centroCaraMenosX.X) / 2, centroCaraY.Y, (centroCaraZ.Z + centroCaraY.Z) / 2), new TGCVector3(0, 1, 0)); var rayoDerCaraYArribaIzq = new RayoY(new TGCVector3((centroCaraX.X + centroCaraY.X) / 2, centroCaraY.Y, (centroCaraY.Z + centroCaraMenosZ.Z) / 2), new TGCVector3(0, 1, 0)); var rayoDerCaraYArribaDer = new RayoY(new TGCVector3((centroCaraY.X + centroCaraMenosX.X) / 2, centroCaraY.Y, (centroCaraY.Z + centroCaraMenosZ.Z) / 2), new TGCVector3(0, 1, 0)); rayos.Add(rayoCaraYAbajoIzq); rayos.Add(rayoIzqCaraYAbajoDer); rayos.Add(rayoDerCaraYArribaIzq); rayos.Add(rayoDerCaraYArribaDer); caraConstructor = (mesh, accionesAnteColision, rayos) => new CaraY(mesh, accionesAnteColision, rayos); return(this); }
public CaraBuilder CaraMenosY() { var centroCaraMenosY = HallarCentroDeCara("-y"); var rayoCaraMenosY = new RayoY(centroCaraMenosY, new TGCVector3(0, -1, 0)); var rayoIzqCaraMenosY = new RayoY(new TGCVector3(mesh.BoundingBox().PMax.X, centroCaraMenosY.Y, centroCaraMenosY.Z), new TGCVector3(0, -1, 0)); var rayoDerCaraMenosY = new RayoY(new TGCVector3(mesh.BoundingBox().PMin.X, centroCaraMenosY.Y, centroCaraMenosY.Z), new TGCVector3(0, -1, 0)); rayos.Add(rayoCaraMenosY); rayos.Add(rayoIzqCaraMenosY); rayos.Add(rayoDerCaraMenosY); caraConstructor = (mesh, accionesAnteColision, rayos) => new CaraY(mesh, accionesAnteColision, rayos); return(this); }