public Solid GetSolid(ship_designPlanItemBlock block) { List <Vector3> vectors = new List <Vector3>(); Vector3 sum = new Vector3(); for (int i = 0; i < 8; i++) { var array = new Vector3() { X = (i & 0b_0001) == 0 ? (float)block.lx : (float)block.ux, Y = (i & 0b_0010) == 0 ? (float)block.ly : (float)block.uy, Z = (i & 0b_0100) == 0 ? (float)block.lz : (float)block.uz }; vectors.Add(array); sum += array; } Vector3 avarage = sum / 8; List <Face> faces = new List <Face>(); switch (block.look) { case 0: //face 3 look switch (block.up) { case 2: faces = Face13(vectors); break; case 3: faces = Face34(vectors); break; case 4: faces = Face03(vectors); break; case 5: faces = Face35(vectors); break; default: Console.WriteLine($"Missing: look:{block.look} up:{block.up}"); vectors.Clear(); break; } break; case 1: //face 2 look switch (block.up) { case 2: faces = Face12(vectors); break; case 3: faces = Face24(vectors); break; case 4: faces = Face02(vectors); break; case 5: faces = Face25(vectors); break; default: Console.WriteLine($"Missing: look:{block.look} up:{block.up}"); vectors.Clear(); break; } break; case 2: //face 4 look switch (block.up) { case 0: faces = Face24(vectors); break; case 1: faces = Face34(vectors); break; case 4: faces = Face04(vectors); break; case 5: faces = Face45(vectors); break; default: Console.WriteLine($"Missing: look:{block.look} up:{block.up}"); vectors.Clear(); break; } break; case 3: //face 1 look switch (block.up) { case 0: faces = Face12(vectors); break; case 1: faces = Face13(vectors); break; case 4: faces = Face01(vectors); break; case 5: faces = Face15(vectors); break; default: Console.WriteLine($"Missing: look:{block.look} up:{block.up}"); vectors.Clear(); break; } break; case 4: // face 5 look switch (block.up) { case 0: faces = Face25(vectors); break; case 1: faces = Face35(vectors); break; case 3: faces = Face45(vectors); break; case 2: faces = Face15(vectors); break; default: Console.WriteLine($"Missing: look:{block.look} up:{block.up}"); vectors.Clear(); break; } break; case 5: //face 0 look switch (block.up) { case 0: faces = Face02(vectors); break; case 1: faces = Face03(vectors); break; case 2: faces = Face01(vectors); break; case 3: faces = Face04(vectors); break; default: Console.WriteLine($"Missing: look:{block.look} up:{block.up}"); vectors.Clear(); break; } break; default: Console.WriteLine($"Missing look:{block.look}"); vectors.Clear(); break; } /* * faces.Add(new Face() { vectors = new List<Vector3>() { vectors[0], vectors[1], vectors[3], vectors[2] } }); * faces.Add(new Face() { vectors = new List<Vector3>() { vectors[0], vectors[1], vectors[5], vectors[4] } }); * faces.Add(new Face() { vectors = new List<Vector3>() { vectors[1], vectors[3], vectors[5] } }); * faces.Add(new Face() { vectors = new List<Vector3>() { vectors[2], vectors[0], vectors[4] } }); * faces.Add(new Face() { vectors = new List<Vector3>() { vectors[2], vectors[3], vectors[5], vectors[4] } });*/ return(new Solid(faces, vectors)); }
public Solid GetSolid(ship_designPlanItemBlock block) { List <Vector3> vectors = new List <Vector3>(); for (int i = 0; i < 8; i++) { var array = new Vector3() { X = (i & 0b_0001) == 0 ? (float)block.lx : (float)block.ux, Y = (i & 0b_0010) == 0 ? (float)block.ly : (float)block.uy, Z = (i & 0b_0100) == 0 ? (float)block.lz : (float)block.uz }; vectors.Add(array); } List <Face> faces = new List <Face>(); faces.Add(new Face() { vectors = new List <Vector3>() { vectors[0], vectors[1], vectors[3], vectors[2] } }); faces.Add(new Face() { vectors = new List <Vector3>() { vectors[0], vectors[1], vectors[5], vectors[4] } }); faces.Add(new Face() { vectors = new List <Vector3>() { vectors[1], vectors[3], vectors[7], vectors[5] } }); faces.Add(new Face() { vectors = new List <Vector3>() { vectors[2], vectors[3], vectors[7], vectors[6] } }); faces.Add(new Face() { vectors = new List <Vector3>() { vectors[0], vectors[2], vectors[6], vectors[4] } }); faces.Add(new Face() { vectors = new List <Vector3>() { vectors[4], vectors[5], vectors[7], vectors[6] } }); return(new Solid(faces, vectors)); } }