Exemplo n.º 1
0
        /*
         * private void thumbnailToolStripMenuItem_Click(object sender, EventArgs e)
         * {
         *  TreeNode node = SectorTree.SelectedNode;
         *  CubeGrid cg = (CubeGrid)node.Tag;
         *  pictureBox1.Image = cg.getThumbnail();
         * }
         *
         * private void loggingCheck_CheckedChanged(object sender, EventArgs e)
         * {
         *  loggingEnabled = loggingCheck.Checked;
         * }
         */



        private void importModuleToolStripMenuItem_Click(object sender, EventArgs e)
        {
            TreeNode     node   = SectorTree.SelectedNode;
            CubeGrid     cg     = (CubeGrid)node.Tag;
            DialogResult result = fileopen.ShowDialog();

            if (result == DialogResult.OK)
            {
                this.update_status("Importing Module");
                string    filename = fileopen.FileName;
                string    xml      = File.ReadAllText(filename);
                CubeGrid  module   = sector.loadCGFragment(xml, false);
                CubeBlock module_attachment_point = module.getBlock("LargeBlockArmorCornerInvWhite");
                if (module_attachment_point != null)
                {
                    //Console.WriteLine("Got module attachment");
                    TreeNode  main_node             = SectorTree.SelectedNode;
                    CubeGrid  main                  = (CubeGrid)main_node.Tag;
                    CubeBlock main_attachment_point = main.getBlock("LargeBlockArmorCornerInvWhite");
                    if (main_attachment_point != null)
                    {
                        Console.WriteLine("Before rotation!!");
                        VRageMath.Vector3 diff = Sector.diff_orientation(main_attachment_point, module_attachment_point);

                        //Console.WriteLine("Got module attachment");

                        //Console.WriteLine("Up :" + main_attachment_point.PositionAndOrientation.up.ToString() + " " + module_attachment_point.PositionAndOrientation.up.ToString());
                        //Console.WriteLine("Forward :" + main_attachment_point.PositionAndOrientation.forward.ToString() + " " + module_attachment_point.PositionAndOrientation.forward.ToString());
                        module.reOrient(module_attachment_point);
                        //Console.WriteLine("module attachment point after reorient: "+module_attachment_point.PositionAndOrientation.position.ToString());
                        main.reOrient(main_attachment_point);
                        //lets try some rotation
                        Console.WriteLine("Steps: " + vrageMath.AngleToSteps(diff.X) + " " + vrageMath.AngleToSteps(diff.Y) + " " + vrageMath.AngleToSteps(diff.Z));
                        module.rotate_grid("X", vrageMath.AngleToSteps(diff.X));
                        module.rotate_grid("Y", vrageMath.AngleToSteps(diff.Y));
                        module.rotate_grid("Z", vrageMath.AngleToSteps(diff.Z));
                        Console.WriteLine("After rotation!!");
                        diff = Sector.diff_orientation(module_attachment_point, main_attachment_point);


                        main.merge(module);
                        SectorTree.Nodes.Clear();
                        SectorTree.Nodes.Add(sector.getTreeNode());
                    }
                }
                else
                {
                    Console.WriteLine("Couldn't get module attachment");
                }
            }
            this.update_status("");
        }