コード例 #1
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();
        }