public static ILrentObject addXMSH(string xmsh, string xcol, API_Device D, Vector3 pos, Quaternion rot, LrentFile z_File, bool a_Notify = true)
        {
            eCFile F = new eCFile(FileManager.GetFile("resources/emptyLevelEntity.bin"));
            eCDynamicEntity E = new eCDynamicEntity(F);
            E.GUID.Value = Guid.NewGuid();

            EFile e0 = FileManager.GetFile(xmsh);

            //string x = FileManager.mapFilename(xmsh), x2 = FileManager.mapFilename(xcol);
            string x = "#G3:/" + xmsh, x2 = "#G3:/" + xcol;
            E.Name.pString = e0.Name.Replace(e0.Extension, "");//xmsh.Replace("._xmsh", "") //@"#G3:/data/raw/meshes/World//" +
            (E["eCMesh_PS"].Properties["MeshFileName"].Object as bCString).pString = x;
            E.Query<eCCollisionShape_PS>()[0].SetXColMesh(x2);//DonCamp_01_L01_COL._xcom
            E.Query<eCCollisionShape_PS>()[1].SetXColMesh(x2);

            ILrentObject O = new ILrentObject(z_File, E);
            O.LoadModels(D);

            E.ApplyBoundingVolume(GENOMEMath.toGENOME(O.Nodes[0].BoundingBox));

            O.File.UpdateContextBox();
            O.File.addObject(O);
            O.Position = pos;
            O.Rotation = rot;

            if(a_Notify)
                RisenWorld.OnEntityAdded(O);

            return O;
        }
 void BackBufferControl_MouseDown(object sender, MouseEventArgs e)
 {
     if (Environment.TickCount - lastDown < 100)
         return;
     lastDown = Environment.TickCount;
     if (z_points.Count >= z_maxcounter || e.Button != System.Windows.Forms.MouseButtons.Left) return;
     z_points.Add(P.GetNewStartPosition(ManagedWorld.NodeLibrary.Camera.Position_ABS));
     if (z_points.Count == z_maxcounter)
     {
         P.OnBufferClick = null;
         label1.Visible = false;
         Vector3 pos = Vector3.Zero;
         for (int i = 0; i < z_maxcounter; i++)
             pos += z_points[i];
         pos /= (float)z_maxcounter;
         eCFile F = new eCFile(FileManager.GetFile("resources/emptyZone.bin"));
         eCDynamicEntity E = new eCDynamicEntity(F);
         E.GUID.Value = Guid.NewGuid();
         E.SetRotation_ST(Quaternion.Identity);
         E.SetPosition_ST(Vector3.Zero);
         bTObjArray<SlimDX.Vector3> Points = E[0].Properties["Point"].Object as bTObjArray<SlimDX.Vector3>;
         Points.Clear();
         float mR = 0.0f;
         for (int i = 0; i < z_maxcounter; i++)
         {
             Points.Add( GENOMEMath.toGENOME(z_points[i] - pos));
             mR = Math.Max(mR, Points[i].Length());
         }
         E[0].Properties["Radius"].Object = mR;
         E[0].Properties["RadiusOffset"].Object = new Vector3(0.0f);
         ILrentObject v_NewObj = new ILrentObject(z_File, E);
         v_NewObj.Matrix = Matrix.Translation(pos);
         v_NewObj.LoadModels(P.Device);
         v_NewObj.File.addObject(v_NewObj);
         RisenWorld.OnEntityAdded(v_NewObj);
         Code.Renderer.NavRenderer.DrawAllNav = true;
         v_NewObj.Position = v_NewObj.Position;
         v_NewObj.getSet<gIZone>().CalculateCenter();
     }
 }