예제 #1
0
        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));
        }
예제 #2
0
        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));
        }
    }