コード例 #1
0
ファイル: Object3d.cs プロジェクト: AbdBelf/MARS_project
        // Load a mesh from a .x file.
        public void LoadMesh()
        {
            // Load the mesh.
            ExtendedMaterial[] exmaterials = null;
            try
            {
                //m_Mesh = Mesh.FromFile(this.sName, MeshFlags.Managed, m_Device, out exmaterials);
                //System.Windows.Forms.MessageBox.Show("FullPath: "+this.fullPath);
                Object3d obj = this;
                //System.Windows.Forms.MessageBox.Show("obj.path: " + obj.getPath() + ". name: " + obj.getName() + ". type: " + obj.getObjType(), "Object3d.LoadMesh");
                //System.Windows.Forms.MessageBox.Show("name: " + obj.getName(), "Object3d.LoadMesh");
                if (!File.Exists(fullPath))
                {
                    throw new FileNotFoundException();
                }
                m_Mesh = Mesh.FromFile(this.fullPath, MeshFlags.Managed, m_Device, out exmaterials);
                //m_Mesh = Mesh.FromFile(this.sName, MeshFlags.Managed, m_Device, out exmaterials);
            }
            catch (Exception x) {// System.Windows.Forms.MessageBox.Show(x.ToString());
            }

            // Load the textures and materials.
            m_Textures  = new Texture[exmaterials.Length];
            m_Materials = new Material[exmaterials.Length];
            for (int i = 0; i < exmaterials.Length; i++)
            {
                string texture_file = exmaterials[i].TextureFilename;
                if (texture_file != null)
                {
                    Debug.WriteLine("Texture " + i + ": " + texture_file);
                    if (texture_file.Length > 0)
                    {
                        try
                        {
                            m_Textures[i] = TextureLoader.FromFile(m_Device, Path.GetDirectoryName(fullPath) + texture_file);
                        }
                        catch
                        {
                            Debug.WriteLine("*********************");
                            Debug.WriteLine("Error loading texture " + texture_file);
                        }
                    }
                }
                else
                {
                    Debug.WriteLine("Texture " + i + ": " + "<null>");
                }

                m_Materials[i]         = exmaterials[i].Material3D;
                m_Materials[i].Ambient = m_Materials[i].Diffuse;
            }

            // Save the number of subsets.
            m_NumSubSets = m_Materials.Length;
        }
コード例 #2
0
ファイル: Object3d.cs プロジェクト: AbdBelf/MARS_project
        public static Object3d GetByID(int id)
        {
            Object3d ret = null;

            try
            {
                ret = Manager.XMLResourceManager.XML3dObject.GetById(id);
            }
            catch (System.IO.FileNotFoundException) { return(null); }
            catch (Exception x) {// System.Windows.Forms.MessageBox.Show(x.ToString());
            }
            return(ret);
        }
コード例 #3
0
        public frm_Add3dObject(Control paretn,Etape step,Object3d lastObj)
        {
            InitializeComponent();
            this.pParetn = paretn;

            btn_DrawObject.Enabled = false;
            grpbx_Manipulation.Enabled = false;

            this.Step = step;
            this.LastObj = lastObj;

            //this._Operation = operation;

            //if (this._Operation == Operation.AddNew)
            {
                //MessageBox.Show("Step.Name: "+this.Step.getName(),"frm_AddP=Object.Constructor");
                if (LastObj != null)
                    number = LastObj.getNb() + 1;

                if (this.Step != null)
                {

                    lbl_StepName.Text = "Etape: "+this.Step.getName();

                    //MessageBox.Show("frm_AddStep.RenderForm.Objects.count: " + RenderForm.Objects.Count.ToString());
                    if (RenderForm.Objects != null && RenderForm.Objects.Count > 0)
                    {
                        foreach (Object3d obj in RenderForm.Objects)
                        {
                            //Fill the list box of the created objects.
                            {
                                lstbx_Objects.Items.Add(obj);
                                //obj.LoadMesh();
                                //lstbx_Objets.Items.Add(file_info);
                                tabControl1.SelectedIndex = 0;
                            }
                        }
                    }
                    //----------------------------------
                }
                else
                    MessageBox.Show("Step null","frm_AddObject.Constructor");
            }
            //else
            {
            }
        }
コード例 #4
0
 public void removeObjects3d(Object3d object3d)
 {
     object3d.setStep(null);;
     objects3d.Remove(object3d);
 }
コード例 #5
0
 public void addObject3d(Object3d object3d)
 {
     object3d.setStep(this);
     objects3d.Add(object3d);
 }
コード例 #6
0
        /// <summary>
        /// Search for an obj data using its id.
        /// </summary>
        /// <param name="id">The id of the targeted obj.</param>
        /// <returns></returns>
        public static Object3d GetById(int id)
        {
            /* On déclare et on crée une instance des variables nécéssaires pour la recherche */
            Object3d obj = new Object3d();
            try
            {
                string rslt = Helper.service.LoadFile("objet3d.xml").ToString();

                StreamWriter sw = new StreamWriter(System.Windows.Forms.Application.StartupPath + "\\temp.xml");
                sw.Write(rslt);
                sw.Close();

                //XPathDocument XPathDocu = new XPathDocument((Stream)Helper.service.LoadFile("Experts.xml"));
                XPathDocument XPathDocu = new XPathDocument(System.Windows.Forms.Application.StartupPath + "\\temp.xml");
                XPathNavigator Navigator;
                XPathNodeIterator Nodes;
                /* On crée un navigateur */
                Navigator = XPathDocu.CreateNavigator();
                /* On crée ici l'expression XPath de recherche d'obj à  partir du login */
                string ExpXPath = "//objet[@id='" + id + "']";
                /* On lance la recherche */
                Nodes = Navigator.Select(Navigator.Compile(ExpXPath));
                /* On vérifie si la recherche a été fructueuse */
                if (Nodes.Count != 0)
                {
                    Nodes.MoveNext(); // NOTE: Necéssaire pour se placer sur le noeud recherché
                    /* Encodage des données dans la classe Object3d */
                    obj.setId(id);
                    obj.setName(Path.GetFileNameWithoutExtension(Nodes.Current.GetAttribute("nom", "")));
                    obj.setType(Nodes.Current.GetAttribute("type", ""));
                    //System.Windows.Forms.MessageBox.Show("obj.type: " + Nodes.Current.GetAttribute("type", ""),"XML3dObject.GetById");
                }
                /* Si aucun obj n'a été trouvé */
                else
                {
                    obj = null;
                }
            }
            catch (System.IO.FileNotFoundException x) { }
            catch (Exception x)
            {
                System.Windows.Forms.MessageBox.Show(x.ToString());
            }
            /* Renvoi de toutes les données dans une instance de la classe "Client" */
            return obj;
        }
コード例 #7
0
        private static void getObjectTransformation_(XPathNodeIterator Nodes, Object3d obj)
        {
            Nodes.Current.MoveToFollowing(XPathNodeType.Element);//Move to first position
            //System.Windows.Forms.MessageBox.Show("XMLObject3D.getObjectTransformation.current:  " + Nodes.Current.Name);
            float posx = (float)Convert.ToDouble(Nodes.Current.GetAttribute("x", "")) * XMLStep.translateFactor;
            //System.Windows.Forms.MessageBox.Show("XMLObject3D.getObjectTransformation.current.getattrib:  " + Nodes.Current.GetAttribute("x", "")+"  "+posx);
            float posz = (float)Convert.ToDouble(Nodes.Current.GetAttribute("y", "")) * XMLStep.translateFactor;
            float posy = (float)Convert.ToDouble(Nodes.Current.GetAttribute("z", "")) * XMLStep.translateFactor * XMLStep.zFactor;
            //System.Windows.Forms.MessageBox.Show("XMLObject3D.getObjectTransformation.posx: " + posx);
            obj.setPosition(new Microsoft.DirectX.Vector3(posx, posy, posz));

            Nodes.Current.MoveToFollowing(XPathNodeType.Element);//Move to first rotation
            //System.Windows.Forms.MessageBox.Show("XMLObject3D.getObjectTransformation.current:  " + Nodes.Current.Name);
            float rotx = (float)Convert.ToDouble(Nodes.Current.GetAttribute("x", "")) * (-1);
            float rotz = (float)Convert.ToDouble(Nodes.Current.GetAttribute("y", "")) * (-1);
            float roty = (float)Convert.ToDouble(Nodes.Current.GetAttribute("z", ""));

            System.Windows.Forms.MessageBox.Show("Befor: Y: " + roty + " Z: " + rotz);

            float angle = (float)Convert.ToDouble(Nodes.Current.GetAttribute("angle", ""));

            obj.setRotation(new Microsoft.DirectX.Vector3(Helper.DegreesToRadians(rotx * angle), Helper.DegreesToRadians(roty * angle),
            Helper.DegreesToRadians(rotz * angle)));

            Nodes.Current.MoveToFollowing(XPathNodeType.Element);//Move to first scale
            //System.Windows.Forms.MessageBox.Show("XMLObject3D.getObjectTransformation.current:  " + Nodes.Current.Name);
            float sclx = (float)Convert.ToDouble(Nodes.Current.GetAttribute("x", "")) / XMLStep.scaleFactor;
            float scly = (float)Convert.ToDouble(Nodes.Current.GetAttribute("y", "")) / XMLStep.scaleFactor;
            float sclz = (float)Convert.ToDouble(Nodes.Current.GetAttribute("z", "")) / XMLStep.scaleFactor;
            obj.setScale(new Microsoft.DirectX.Vector3(sclx, scly, sclz));
            //Move back to the parent so the invoker of this methode can continue from where it started.
            Nodes.Current.MoveToParent();
        }
コード例 #8
0
ファイル: Etape.cs プロジェクト: walidBelfadel/MARS_project
 public void addObject3d(Object3d object3d)
 {
     object3d.setStep(this);
     objects3d.Add(object3d);
 }
コード例 #9
0
ファイル: Etape.cs プロジェクト: walidBelfadel/MARS_project
 public void removeObjects3d(Object3d object3d)
 {
     object3d.setStep(null); ;
     objects3d.Remove(object3d);
 }
コード例 #10
0
        private void btn_DrawObject_Click(object sender, EventArgs e)
        {
            ListBox listbox = ((ListBox)tabControl1.SelectedTab.GetChildAtPoint(new Point(0, 0)));

            ObjForListView model = (ObjForListView)(listbox.SelectedItem);

            if (model != null)
            {
                Vector3 scale = new Vector3(1f,1f,1f);
                switch (model.Name)
                {
                    case "droid":
                        scale = new Vector3(0.085f, 0.085f, 0.085f);
                        break;
                    case "miku":
                        scale = new Vector3(0.35f, 0.35f, 0.35f);
                        break;
                    case "tournevis":
                        scale = new Vector3(7.7f, 7.7f, 7.7f);
                        break;
                    case "flecheVerte":
                        scale = new Vector3(0.88f, 0.88f, 0.88f);
                        break;
                    case "box":
                        scale = new Vector3(20f, 20f, 20f);
                        break;
                }
                Object3d obj3d = new Object3d(Convert.ToInt32(model.Id), model.Name, model.Type,
                    new Vector3(0.0f, 0.0f, 0.0f), new Vector3(0, 0, 0), scale, RenderForm.m_Device);
                obj3d.setNb(this.number);

                try
                {
                    obj3d.LoadMesh();
                }
                catch (FileNotFoundException)
                {
                    string str = "Le modèle " + obj3d.getName() + " n'existe pas dans le chemain " + obj3d.getPath();
                    MessageBox.Show(this, str, "Message d'erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

                RenderForm.Objects.Add(obj3d);
                lstbx_Objects.Items.Add(model);
                tabControl1.SelectedIndex = 0;
                if (lstbx_Objects.Items.Count > 0)
                {
                    lstbx_Objects.SelectedIndex = lstbx_Objects.Items.Count - 1;
                    lstbx_Objects_Click(null, EventArgs.Empty);
                }
                btn_RemoveObject.Enabled = true;
            }
        }